Add BasicAuth, Cookie and OAuth authentication providers

OAuth provider is optional and requires for oauthlib to be installed.
Use [oauth] extra during install.
Integrate authn providers with client
Handle `auth` keyword argument with custom authn provider

Passing authn provider from outside instead of maintain some inner one
allows to create more flexible workflow when you have to deal with
multiple accounts against single instance.

Due to name collision, `Server.replicate` now accepts `authobj` param
with replication credentials for target database.

Some sugar like context manager may be added in future.