Add RequestEnhancer as customization point for token and auth requests

Example usage...

First configure the *TokenProvider you need with a RequestEnhancer (up to two for auth code):

    DefaultRequestEnhancer enhancer = new DefaultRequestEnhancer();
    enhancer.setParameterIncludes(Arrays.asList("foo"));
    tokenProvider.setAuthorizationRequestEnhancer(enhancer);
    oauth2RestTemplate.setTokenProvider(tokenProvider);

(only the auth code provider has the authorizationRequestEnhancer)

Then for each HTTP request that might require an access token to be obtained, set the extra
parameters on the token request

    oauth2RestTemplate.getOAuth2ClientContext().getAccessTokenRequest().set("foo", "bar");

And finally use the RestTemplate as normal

Fixes gh-136