Refactored brick deep saving logic
Refactored logic making repository implementations simpler

Repository logic now only concerned with getting and peristing bricks
Added some error handling

Added isValid method for propertyTypes
Added isBrickValid abstraction method (need to add some for IDs, etc
aswell!)
Added more helpful error messages
More error messaging