Major refactor or authorization and token requests

* Untangles AuthorizationEndpoint and changed UserApprovalHandler to use
two methods for the two different situations during which it is called
* Replaces AuthorizationRequest with OAuth2Request
* Moved validateScope into its own interface, with a default implementation
Updated samples to reflect auth request changes.
Refactored request lifecycle

Refactored AuthorizationRequest into three distinct classes,
AuthorizationRequest, StoredRequest, and TokenRequest.
Removed AuthorizationRequestHolder, now storing
OAuth2Authentication everywhere.

(Squashed pull request #79 by aanganes)
StoredOAuth2Request -> OAuth2Request
Tidy names and interfaces
Tidy up a few things related to *Request

- OAuth2Request is now immutable from the point of view of clients
(it still has setters but they are protected)
- OAuth2RequestFactory has overloaded methods (instead of method names
that refect the parameters)
- OAuth2RequestFactory.createTokenRequest for the implicit grant
explicitly requires the grant type to be provided
- Cleaned up some copyright notices
- Removed or fixed some TODO/FIXME comments
Add ClientDetails to some method signatures where it is clearly always available
Refactored OAuth2Request, AuthorizationRequest, and TokenRequest

...into a flatter heirarchy
Merge feature authrequest: major overhaul of AuthorizationRequest