datastore: scope Key creation to include NS. fixes #116.

RE: #116

I actually have 2 different implementations for this, but this was the one I thought was the most logical.

When a user creates a dataset, they can provide a namespace. Then, anytime they need a key, instead of `datastore.key()`, they call `datasetInstance.key()` - the key will be created with the namespace already bound to the Key.

The other implementation removed any association of a namespace from a Key object, which [felt wrong](https://developers.google.com/datastore/docs/apis/v1beta2/key).

PTAL & LMKWYT.
In JS land, common convention is `null` is short for "an object was supposed to be here, but one wasn't provided." `undefined` is a catch all for other values that were intended for non-undefined values. I just sent in a commit to clean up the null vs empty string vs undefined, and use `undefined` where the string for a namespace was meant to be.