Change implementation of EventSourcedObject to only work with protected properties and methods

When using the EventStore in a DDD context, we do not want to expose the technical implementation of the persistence mechanism in the domain.
With this changes, an AggregateRoot in a Domain needs to extend the abstract EventSourcedObject class like befor, but no public methods will pollute
the interface of the AggregateRoot.