Refactor pipeline to separate registration time from running time.

Refactor registration API to use a bootstrap
Added end user configuration story
A few unit tests
Updated existing registration to use new API
That's right generics are special
Fixing unit tests
Merge branch 'develop' into PipelineRegistration
Made all behaviors and a few more class internal
Fixing format
Made all DisposeManaged() privates

Made most PipelineExecutor class internal
remove guards in BehaviorRegistrations.Register

since they are internal
remove redundant field
Merge branch 'develop' into PipelineRegistration

Conflicts:
	src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs
	src/NServiceBus.Core/Features/Support/FeatureInitializer.cs
	src/NServiceBus.Core/Settings/ScaleOutSettings.cs
Merge branch 'develop' into PipelineRegistration
Merge branch 'develop' into PipelineRegistration
Removed Console.Out
Fixing up the registration of core behaviors
Removed unnecessary "pragma warning"