Add: equals methods to properly compare objects
Ref: Re-add message interface

Re-introduced message interface so that it can be used to typehint on
consistent getters without setters which means objects that are
constructed differently can still be used together (for exmaple a
message builder).
Add: Message Builder