Simplify repository interface

- Temporarily remove error handling
- Replace #create with #add. Rather than inflating entities within the
  repository, clients of the repo will pass in already-inflated
  entities. The same applies to #update.
- Use a factory to create an entity from attributes. The service
  receives attributes, inflates an entity, and then passes it to the
  repository for persistence.