text: Title: v0.13, django client: lazy-loading server metadata breaks logout flows
  Body: **Describe the bug**
  
  Version 0.13 intoduces lazy loading of server metadata on first auth request, but this breaks logout flows for some OIDC providers (in my case, Keycloak).
  
  Consider this logout view (django):
  ```
  def logout(request):
      """ log user out of django and redirect to the Keycloak logout url, so that he gets logged out everywhere  """
      log_out(request)
      return_to = urlencode({'redirect_uri': request.build_absolute_uri('/')})
      logout_url = oauth.keycloak.server_metadata['end_session_endpoint']
      logout_url += '?' + return_to
      return HttpResponseRedirect(logout_url)
  ```
  
  This logic counts on `server_metadata['end_session_endpoint']` being available (this is a special Keycloak feature). 
  However, when the django app restarts, `server metadata` is empty until someone performs a login flow. Until that, all logout flows will end up with an error.
  
  **Error Stacks**
  
  ```
  Internal Server Error: /logout
  Traceback (most recent call last):
    File "/Users/1111/Library/Caches/pypoetry/virtualenvs/demo-keycloak-client-py3.7/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
      response = get_response(request)
    File "/Users/1111/Library/Caches/pypoetry/virtualenvs/demo-keycloak-client-py3.7/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
      response = self.process_exception_by_middleware(e, request)
    File "/Users/1111/Library/Caches/pypoetry/virtualenvs/demo-keycloak-client-py3.7/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
      response = wrapped_callback(request, *callback_args, **callback_kwargs)
    File "/Users/1111/_projects/fasttrack/demo_keycloak_client/auth0login/views.py", line 28, in logout
      logout_url = oauth.keycloak.server_metadata['end_session_endpoint']
  KeyError: 'end_session_endpoint'
  ```
  
  **To Reproduce**
  
  Instantiate the client like so:
  
  ```
  from authlib.integrations.django_client import OAuth
  
  oauth = OAuth()
  
  oauth.register(
      'keycloak',
      server_metadata_url='https://sso.fstrk.io/auth/realms/fasttrack/.well-known/openid-configuration',
      client_kwargs={'scope': 'openid profile email'}
  )
  
  assert oauth.keycloak.server_metadata['end_session_endpoint']
  ```
  
  
  **Suggestions**
  Currently I am force-loading the metadata on Django startup:
  
  ```
  oauth.keycloak._load_server_metadata()
  ```
  Since `end_session_endpoint` is Keycloak-specific and the library cannot be extented to provide a `deauthorize_redirect()` method, my suggestion is make `load_server_metadata()` public and document it.
  
  Thanks!
  