connection: allow passing a credentials object. fixes #136.

RE: #136 

All entry points now accept a `credentials` object, which just gets passed along to `Connection`.
if (!opts.credentials.client_email && !opts.credentials.private_key) {
  throw new Error(...);
}
this.credentials = opts.credentials;

Too many iterations, ifs and constants for a simple check.