Adding OAuth2 request authenticator
Client ctor now supports OAuth2

Base ctor now requires an AuthenticationMode (OAuth1/OAuth2) to be set;
defaults to OAuth1.
Added ctor overload that just takes an OAuth2 access token and sets the
Mode to OAuth2.
SetAuthProviders() now delegates the creation of IAuthenticator to
GetAuthenticator(), which respects the AuthenticationMode setting.
Refactored some duplicated effort out of Client ctor.
Added OAuth2 auth url and access token fetching

- Added Client.BuildAuthorizationUrl overload for generating the OAuth2
authorization URL.
- Added User.* GetAccessToken overload for fetching an OAuth2 access
token after being redirected back to the calling application.
- Refactored deprecated IRestClient.BaseUrl & Authenticator setter code
out of User.*
Fixed GetAccessTokenAsync signature conflict
OAuth2 auth header is selectively added.

OAuth2Authenticator no longer adds an 'Authorization : Bearer <Access
Token>' header if the Access Token is null.