Adding helper methods for implicit datastore environ.

By setting two environment variables

- GCLOUD_DATASET_ID
- GOOGLE_APPLICATION_CREDENTIALS

the user can call convenience methods in `gcloud.datastore` directly
without worrying about auth or the name of the dataset. The
goal is that in places like App Engine and Compute Engine, the
dataset ID can be implied without **any** user intervention.

Partially addresses #337.

NOTE: This still needs to be documented, but it's unclear
      where is appropriate. We also need to have documentation
      for auth (outside of CONTRIBUTING.md).
Making cached dataset ID require explicit interaction.

Incorporates feedback from @tseaver. Also
- Fixing bad tests that accidentally leave side-effects.
- Making the method to set the default dataset public.
args swapped in docs
Merge pull request #473 from ptone/patch-1

args swapped in docs
Revert "args swapped in docs"
Merge pull request #474 from GoogleCloudPlatform/revert-473-patch-1

Revert "args swapped in docs"
Merge pull request #444 from dhermes/implicit-dataset-from-environ

Implicit dataset from environ
Remove Key.from_path and derivative uses.

Addresses first part of #451. Also removes uses of path in
place of key since Key constructor will enable such easy
use going forward.
Merge pull request #456 from dhermes/fix-451-part1

Address first part of 451: Remove Key.from_path
Making all attributes on Key read-only and sorts out use of setters.

Addresses second part of #451. In some cases, since no valid
replacements for setters are implemented here, the functionality
is replaced with hacks using protected methods.

Also added a getter for Key._dataset_id and made the Key.path
property return a copy since a `list` of `dict`s is very much
mutable.
Merge pull request #458 from dhermes/fix-451-part2

Address second part of 451: Remove all setters and make attrs into @property