Derive Macros

A derive marco that generates trait impls.