Add redis session support

Implementation taken from here - http://flask.pocoo.org/snippets/75/
Reauth controller

Reauth controller is triggered by a push from sign-on-o-tron. After
validating the request, all sessions associated with a user are deleted.
Set redis session expiry time to 2 hours

This is to match signon expiry time to minimise the cases where a signon
user session has expired, but the admin app user session has not
expired. This leads to 403s when we request data from stagecraft, which
will be caught, but the session length being a similar time will avoid
this in most cases.
Merge pull request #20 from alphagov/reauth_wip

Add redis sessions and reauth to admin app
Set PYTHONUNBUFFERED environment variable

https://docs.python.org/2/using/cmdline.html#envvar-PYTHONUNBUFFERED

Like a lot of things (hi Ruby) Python buffers stdout. This is annoying
in development because it means you might not see the output you're
looking for.

In production-like environments, we should not be putting anything on
stdout that would cause this to be an issue.
Move helpers into their own file

Improve the testing of the requires_authentication decorator. There's
no need to test the decorator in every place that it's used if we
can just test once that it's working.
Add an /upload-data endpoint

The upload endpoint should list the data sets that the user has
access to, and provide a form for each one to allow the user to
upload data.
Make flash messages line up

I don't think .container-fluid should be defined in each of the views.
Upload POST work in progress
Fix second test
Tidy up for pep8
Working flash tests for two http errors
@wip Refactor structure to avoid multiple redirects.

Finish tests