### Summary
Try to integrate basic OAuth functions with Pywikibot. Insipred by @jayvdb's comment on T102599
Pywikibot will supply OauthLoginManager to fetch OAuth access token (comparing to the original LoginManager fetching cookies). Pywikibot can be configured to use OAuth tokens instead of cookies as authentication information to send http requests.
Patch on Gerrit: https://gerrit.wikimedia.org/r/#/c/219787/
### Authentication using OAuth
Pywikibot has two types of account: user and sysop, so we may need two types of OAuth consumer when using OAuth for authentication: the first one is for common user, which need basic rights, the second is for sysop, which need advanced rights. Those rights can be configured when proposing a new OAuth consumer. For now, **we just consider supporting user.**
OAuth is supported through `authenticate` defined in user-config.py like http basic auth. OAuth tokens can be fetched by using scripts/login.py. Then user could set tokens in `authenticate` for target site. Pywikibot will use the user-defined tokens for OAuth authentication.
OAuth token fetching involves user interaction which is implemented in OauthLoginManager.
### Done
1. OauthLoginManager:
1) Access token retrieval based on mwoauth
2. OAuth configuration:
1) Supply options to configure OAuth and its tokens in user-config.py
2) Adapt pywikibot/comms/http.py to OAuth options
3. Tests in tests/oauth_test.py:
1) TestOauthLoginManger: Currently use local wiki instance and will change to test.wikipedia.org for testing
### Todo
1. Wait for the OAuth consumer request get approved and update TestOauthLoginManger