Clean up Macros.scala
Implement hashCode (parital #59)
Implement equals (fixes #59)
Documentation and cleanup
Merge pull request #60 from gzm0/equals-hash

Implement hashCode and equals