Added Authorize function to OAuthAuthenticator to handle only token exchange

The OAuthAuthenticator HandlerFunc is meant to be the redirect_url from the access request. I thought it would be useful to provide a function that uses a provided code from a different redirect url and only handles the token exchange. For example, if your OAuth redirect URL is set to your browser-side JS, which subsequently passes the code to your server-side Strava client.
Storing the code on the `OAuthAuthenticator` creates a race condition. If two requests come in at the same time they could be using the wrong/same code.  

I would suggest changing the authorize function to `Authorize(code string, client *http.Client)`