Add support for disabling login providers

Refactored (mostly copy-paste to parent classes) the login provider system
to reduce code duplication.

OAuth login providers will be automatically disabled if an OAuth app key
and secret are not provided in the SlideAtlas configuration.

A new SlideAtlas configuration option, SLIDEATLAS_SHIBBOLETH, was added
to toggle Shibboleth logins, since a server cannot determine if mod_shib
is active until a request to a protected endpoint is actually made.

Google login is hardcoded as always enabled for now, but will use the new
system once it's updated to OAuth2 too.
Fix a bug in Shibboleth logout
Merge branch 'login-disable'

* login-disable:
  Fix a bug in Shibboleth logout
  Add support for disabling login providers