Refactor HTTP client to use HttpRequest objects directly
Add test to ensure cert bundle only gets loaded once
Allow copy construction of AWS.Endpoint
Disallow null/undefined endpoint arguments
Allow path to be overridden in HttpClient by HttpRequest
Add httpOptions to Config and allow HTTP timeout

    var s3 = new AWS.S3({httpOptions: {timeout: 500}});
    s3.client.getObject(params, function(err, data) {
      // err.code can be a TimeoutError
    });

httpOptions can also contain other HTTP level options, like `agent`,
which sets the `http.Agent` object to use in the request.

Creating a custom connection pool for a specific client over HTTP:

  var http = require('http');
  var agent = new http.Agent({maxSockets: 20}); // pool size = 20
  var options = {sslEnabled: false, httpOptions: {agent: agent}};
  var s3 = new AWS.S3(options);

Note that increasing the connection pool size over HTTPS connections
increases overhead for short-running processes.

Closes #5
Add AWS.MetadataService to query EC2 instance metadata
Bind all doneCallback functions to emitter
Close HTTP socket properly in event of timeout
Update tests to use new HttpClient.handleRequest method
Allow credentials to be loaded asynchronously

* Add Config.getCredentials
* Add Credentials.{get,needsRefresh}
* Add EC2MetadataCredentials
Fix loading of credentials for EC2MetadataCredentials
Mark integration tests that cannot be run with vended credentials
Refactoring on config and event listeners