Added more tests to cover event router
Adding AggregateWithMemento base class to represent an aggregate who wants to take snapshots
Modified memento object to be templated so RestoreShapshot will give the user the real snapshot object (no casting needed)