Created new way to raise events and handle their cancellations. Everything is strongly typed so should make
working with events much nicer for end users. Also ensures that the Sender is the object raising the event.
them in each method since they are only supposed to be using their single unit of work anyways (resolving
will return the same repository anyways, but in some cases it might have been with a different UOW)
Removed SetUnitOfWork method on IRepository as this is not needed.
Removed the old implementation of RepositoryResolver and replaces it with the RepositoryInstanceResolver (but
maintained the name of RepositoryResolver)