Factor out a BaseClient from the AdminAPI

Separate the concerns. BaseClient is responsible for constructing and
issuing the request. AdminAPI is responsible for knowing about the
endpoints.

The aim is to use BaseClient from both AdminAPI and DataSet, however,
BaseClient may be factored out further to not be a base class first.
Fix README to reflect expected usage

We provide the token when constructing the client and expect a new
client to be created for a different endpoint.
Extend DataSet from BaseClient

Removes all the HTTP request level stuff from the DataSet client and let
BaseClient handle it.

This moves the special case 404 handling for AdminClient (return None
rather than raise the exception) into a decorator that can be applied on
a per method basis.

This also changes the interface to DataSet very slightly in that the get
method no longer returns the requests Response object. This was a bit
too leaky an abstraction for my liking (I know, we're leaking HTTPError)
and we're not actually using it anywhere.
Add validation for base_url and token
Move gzip test to BaseClient

Gzipping now happens in the BaseClient and is applied to all large
writes.
Add new admin API endpoints
Fix admin dashbord module path

It is singular not plural in stagecraft.
Be explicit about returning None

Because 'explicit is better than implicit'
http://legacy.python.org/dev/peps/pep-0020/
Merge pull request #29 from alphagov/add-updates-to-admin-client

Refactor client and add new admin API endpoints