New flow for getting auth

The main aim here is to make authentication tokens be passed around as
environment variables, rather than stored in files on disk.

gapy and google's oauth client library don't make this easy, because
they want to be passed and create files containing auth tokens.

This commit introduces an "AuthFileManager" which maintains a temporary
directory containing auth token files, and ways to serialise them to and
from a relatively concise representation which will fit in an
environment variable.

It also introduces a "setup_auth" script which creates the necessary
environment variable (performing the oauth flow).

Finally, it documents how to setup and use the auth.
Tidy up caching code

Introduce a CacheManager class to separate the cache code out.

Use a proper tempfile creation routine for creating the tempfiles for
parially created cache entries.

Move the support code for caching into the "support" directory"

Make the cache directory location be controllable by setting the
CACHE_DIR environment variable.
Merge pull request #2 from alphagov/update_auth

Update auth flow