EventSourcedAggregateRoots should have the capability to instantiate themselves.

Yet another pass at aggregate root instantiation. This method was mentioned in #28.

This comes pretty close to allowing for private constructors out of the box except that it is really only easily possible if we were doing things as a trait. However, protected constructors will help a lot so I think I'm fine what that.

Supporting private constructors and custom instantiation (arguments to the constructor, for example) are possible provided that the aggregate root overrides `instantiateForReconstitution`.

I'm up for renaming any of these things if it makes it easier. I borrowed the "reconstitute" naming from Event Centric.
Please add `@return EventSourcedAggregateRoot`