Extracted HttpErrorHandler interface from Global

* Play will by default try and load one of these from the root package called ErrorHandler
* If none is found, it will fallback to one that delegates to Global, so that Global.onError etc methods still work for legacy apps
* Added a new mechanism to the Reflect utils to load bindings for either a Scala interface, or a Java interface with an adapter to the Scala interface
* Updated documentation, including removing documentation on old Global methods
`Request` is also just a trait that doesn't have any public concrete implementations.

While I completely agree with you, providing either `Request` or `RequestHeader` are separate changes in their own right that will have a fundamental impact on Play's public API.  They need to be carefully thought through, in particular, we'd like to preparse many headers, including the session, and make them strongly typed, but we don't want two sources of truth (both the headers map and the strongly typed parsed values).

In contrast, this FakeRequest is just something introduced for Play's tests, it is not public API, and so can be done with little thought.  I hope some day we can get rid of it, but that day isn't today.