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.