Derive Macros

Assuming there exists an enum called Address, this adds a crate-public function addr() -> Address which gets the element from the enum with matching name