Using IDictionaries instead of Dictionary
Defined ICatalog interface for usage between catalog and container. Added fallback to find a factory at runtime.