Fix Property macro to correctly validate key-paths
Accessors implement -hash and -isEqual:
Use shared Property objects + test