Require gateways to use DomainModelObjects
Offload persist determination to the DataMapper instead of gateways

Datamappers now explicitly work with DomainModelObjects instead of
anything
Remove Activities and Goals since they're no longer needed for the project
Restrict Keys to be explicit to DomainModelObject types
Redo proxies to extend the source object classes

Also remove friend and person from commands, as we have our own
implementations
Redo gateways to be abstract classes and return values on method calls

A connection for all gateways will exist per thread
Person and its mock gateway have been updated to use the new gateway
Persons now have a "password" field
Make DataMapper exist per thread instead of statically and finish persist

Other minor changes include typing registering gateways for compile time
checking, and making sure UoW is flagged properly when loaded
Add placeholders for friend gateway
Add an SQL based person gateway
Add standard code format to the project and reformat all files