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.
fix(app): allow empty sub-module invokation arguments

Previously, when instantiating a sub-module after providing global
configuration details, we were still requiring an `options` object, even
though it is meant to be optional.