Add service generation monitoring and optimizations based on the result

Optimizations:
------------------
Scoping of three services
Caching of action binding context.
Make input formatters lazy

About 50MB less of memory consumption when server is loaded.
why not just `return y.Value.CompareTo(x.Value);`