- 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
- 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