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
I'd like it if we did this a bit differently. One day I may submit a PR to show a different approach. :)