added new IOC project, moved all IOC code into new project,
added type constraint to IOC registration API to check that TConceteType inherits from TAbstractType