Changed DefaultAggregateRootRepository to allow the actual instantiation of AggregateRoot objects to be changed (pulled Activator.CreateInstance call out into protected virtual method).
Added sub-class of DefaultAggregateRootRepository, FactoryBasedAggregateRootRepository, that takes a factory method as a parameter and uses this to construct AggregateRoot instances.