Support the Usable Auth pattern in the Google Node Client library

This pull request extends the auth portion of the client library to add the usable auth pattern for service accounts. This allows the user to create a few lines of code which will correctly set up a credential client no matter whether the code is running in GAE, GCE, a managed VM, or on a local dev machine. 

See https://developers.google.com/accounts/docs/application-default-credentials for more information about usable auth.

See the examples/default_auth.js file for an example of how usable auth works in Node after this checkin.

All unit tests pass, in addition to many new tests to cover to new code.
Closure Linter has not been run yet. I will be doing that separately. I'd like to give folks more time to look at the substance of this review, so I'm sending it now.

Thanks!

This does not seem to support the case of a  user refresh token, which is one of the scenarios that can come through the environment variable or the well-known file. See GoogleCredential.fromStream in Java where it checks the "type" value and parses differently from there.

Also, the private key id for a JWT should be packed into the JWT, which we did as part of the Java and Python implementations. Look for how the variable serviceAccountPrivateKeyId is used in the Java implementation.