Edit Renamed Create to Register
Edit Changed all functions in the router to be internal and remove all static functions
Edit Added properties with internal accessor
Edit Rewrote the way routes are now added. This meant adding a little hack when applying groups but overall the outcome is much nicer
Edit Middleware now inherits from AutoLoadObject
Edit Added the function CallEnvironmentFunction which allows the calling of Development, Production, Profiling, Testing or Staging setup functions
Edit Added the calling of application.Register and application.CallEnvrionmentFunction
Edit added the calling of CallEnvriomentFunction to all AutoLoadObjects.