feat(app): support global configuration

`require('gcloud')` will now return a function. When invoking, pass in
an object to persist properties to future sub-module instantiations. You
may also continue to use the static methods on it when global
configuration isn't needed.

BREAKING CHANGE: using new to instantiate a sub-module is no longer
supported. To match, constructors previously used with `new` have been
renamed to all lowercase characters.

Before:
var gcloud = require('gcloud');
var dataset = new gcloud.datastore.Dataset(/*...*/);

After:
var gcloud = require('gcloud');
var dataset = gcloud.datastore.dataset(/*...*/);

Fixes #172
Fixes #191
Merge pull request #196 from stephenplusplus/global-config

support global configuration.
feat(datastore): move Dataset.key() arguments to array

Specify parameters in Dataset.key() in an array instead of as a list
of arguments. Single parameter can be specified sans in an array.

BREAKING CHANGE: Dataset.key() no longer accepts arguments list of
parameters and no longer requires null parameters for an unknown
identifier when creating incomplete keys. Single kind can still be
specified without surrounding in an array.

To migrate the code, simply surround arguments in an array and
remove the trailing null if you have it. See the example below.

Before:

var key1 = dataset.key('Company', null);
var key2 = dataset.key('kind1', 123, 'kind2', 'id2');
var key3 = dataset.key('kind1', 123, 'kind2', null);

After:

var key1 = dataset.key('Company');
var key2 = dataset.key(['kind1', 123, 'kind2', 'id2']);
var key3 = dataset.key(['kind1', 123, 'kind2']);