Fix redis sessions

Gunicorn does not call the `start` method, so the session config is not
picked up. We may want to change the convention and have an entry point
that is shared between development and production modes of running the
app, but this change should quickly fix the redis sessions that are
causing issues
Merge pull request #29 from alphagov/fix-redis

Fix redis sessions
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.
Add flask integration tests for upload

currently I am having a problem extracting stuff from the session during
tests so we are following redirects to test messages. This is not ideal.
Will try and fix
Working code for the tests we have of upload

We should be able to get these test working without the templates which
will come in the next commit
Template changes to render all the messages upload is now sending out
tests for upload when no file
Fix for upload when no file
pop session stuff, don't just read it - prevent multiple display
improve tests - address issue of having to follow redirects

This means the tests are more unit tests - they no longer have
dependencies on the templates or other upload routes