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
Making Key.parent return the same instance on return calls.

This is in preparation for adding parent to the constructor.

Addresses third part of #451.