AggregateRootRepository impl. that creates instances using a factory method

We were in need of having our AggregateRoots instantiated through our IoC container.

Currently custom implementations of IAggregateRootRepository aren't really possible due to the use of internal fields on AggregateRoot, and controlling instantiation isn't possible through decoration.

Instead I've made a new protected virtual method in the default repository which creates the actual instance, and created a new repository that allows the use of a factory method to instantiate AggregateRoots.