Add support for login via LinkedIn's OAuth2

The LinkedIn icon is from: https://github.com/intridea/authbuttons

Usage of the LinkedIn logo here should be fair use.

Closes #31.
Merge branch 'login_linkedin'

* login_linkedin:
  Add support for login via LinkedIn's OAuth2
Add a missing package to the requirements.txt file
Merge branch 'missing_requirement'

* missing_requirement:
  Add a missing package to the requirements.txt file
Fix a performance regression when displaying the session list

Referencing 'session.database' inside the innermost loop caused additional
Mongo queries. Using 'role.db', which is already cached, improves the
performance of large page loads.
Merge branch 'sessions_performance'

* sessions_performance:
  Fix a performance regression when displaying the session list
Update Apache WSGI to suggest setting an path to the site config file

After extensive research, I can't find any way to change the environment
of the WSGI daemon before it imports the WSGI site file for the first
time. Apache's "SetEnv" directive only applies to the requests that are
provided to the site.

An alternative location for placing site-specific configuration files
outside of the code would be Flask's instance directory. While potentially
more appropriate for an installed app, it is less flexible than the
environment variable approach.
Merge branch 'apache_site_config'

* apache_site_config:
  Update Apache WSGI to suggest setting an path to the site config file