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
Merge pull request #3550 from jroper/http-request-handler

Implemented HttpRequestHandler abstraction