-add `TImplementation` to `ITypedRegistrationBase` and `IOnCreate` and to every inheriting interface and class
- add non generic `IOnCreate` with `Action<object>` and use it in `CreateInstance()`
- add simplified interfaces for `IMultitonRegistration` and `ITypedRegistrationBase`
- pass parameters that will be used to create an instance of the registered type
- add new method `UpdateArgumentsWithRegistrationParameters()` that handles these parameters in the `CreateInstance<>()` method
- add `WithFactoryMethod()` to set a `FactoryMethod` that gets called when an instance of the registered type is created
- allow registration of only an interface, if you resolve only an interface without a factoryMethod an exception is thrown
- rename IRegistrationBase to IRegistration
- split IDefaultRegistraton into IRegistrationBase and a new IDefaultRegistration (same with implementations)
- throw circularDependencyException when user tries to resolve a circular dependency
- make non-generic Resolve() method private
- add resolveStack to private Resolve() and ResolveInternal<>() methods and all methods in between their calls
- allow declaration of interfaces as scope, but still getting instance through implementation
- add new method `ClearMultitonInstances<T>()` that allows to clear the created multiton instances for a given type
- handle `ClearMultitonInstance<T>()` method in abstract factories and call the corresponding method in the IIocContainer
- update tests