Add domain object API and rolling snapshots

- AggregateRoot and Entity are now constructor "makers" that return
  registered constructor functions recognized by the serialisation
  routines used in the snapshot subsystem. They inherit from
  DomainObject. Value objects are not yet modelized.
- Only MongoDB event store supports rolling snapshots at the moment.
- Its default snapshot max age is 99.