Implemented HttpRequestHandler abstraction

* Pulled onRequest, routeRequest, filter etc methods out of GlobalSettings, and put them into a HttpRequestHandler abstraction.
* Introduced HttpConfiguration abstraction to abstract out http configuration
* Rewrote Scala documentation on intercepting requests
* Didn't rewrite Java documentation on intercepting requests - felt a bit like yak shaving
Just to be sure, this `BuiltInComponents` trait is not currently used by Play? The current default flow is that Play loads the application using the `GuiceApplicationLoader`, which loads the `HttpRequestHandler` by reflection (using `DefaultHttpRequestHandler.bindingsFromConfiguration`).

This `BuiltInComponents` class is intended to be used by developers who implement their own `ApplicationLoader`, right?