Created a container definition class

Migrated Autofac to use definition model
Added the rest of the containers
Moving classes to more internal namespaces
Better names and api doco
Adding new generic constraint
Fixed obsolete messages
Fixed acceptance tests
Adding trace to failing test
Merge pull request #2196 from Particular/Container_extensions

Container extensions
Merge branch 'develop' into release-5.0.0
Feature prereqs now requires a reason to enable better diagnostics