DAO API: entities, service interfaces & exceptions

I've created a separated PR for the DAO API to unblock other tasks ASAP and to receive your feedback on design prior to development.

Points to discuss:

1. Entities
  1. All constructors w/o arguments
  1. `hashCode` and `equals` use auto-generated `id` property. Code style is from IDEA auto-generated methods :)
1. DAO Services
  1. Exceptions are being thrown only for business cases (i.e. underlying DB exceptions are not re-thrown as DAO Exceptions)
  1. `OptimisticLockException` is used to handle Optimistic Locking using `version` property
  1. `save` method is used for both `create` and `update` operations depending on `isNew()` result
  1. `Content` entity's `content` property is represented as a `byte[]`, but with getters and setters allowing to manipulate this field as a string
  1. I propose to save `Content`'s relations manually prior to saving `Content` object to simplify DAO layer