Initial events
Rename promise.js to request.js
Add AWS.EventEmitter class
Initial refactor of event-based request system

This commit includes many changes to internal systems, namely:

* AWS.RequestHandler was removed. Its logic was moved into AWSRequest

* AWS.AWSRequest is now an EventEmitter emitting the following events:
  - validate
  - build
  - sign
  - send
  - httpHeaders
  - httpData
  - httpDone
  - retry
  - error
  - success
  - complete

* Added AWS.EventListeners namespace to keep track of named events
  that are added to services

* Converted all AWS.Client subclasses (QueryClient, RESTXMLClient, etc.)
  into AWS.ServiceInterface.* modules implementing 3 methods:
    - buildRequest (for build event)
    - extractError (for extractError event)
    - extractData (for extractData event)

  These methods match the events they listen to (named above), and
  are registered by the equivalently named modules in AWS.EventListeners.*

  The separation is for testing. The request building and data extraction
  can now be tested individually for a service interface format without
  requiring the event emitter infrastructure:

    var client = new AWS.Client();
    var req = new AWS.AWSRequest(client, 'operation', params);
    AWS.ServiceInterface.Json.buildRequest(req, req.response);

* Some tests were disabled (renamed *.off). These tests still need to be
  updated to use the new infrastructure for testing. This is a TODO.
Fix jshint warnings and relax sub checking
AWS.util.copy should not copy null/undefined
Fix integration helper function
Fix mapping of Action parameter in Query service interface
AWS.util.inherit should create pass-through ctor if constructor not supplied
Move service client tests to service interface test directory
Convert service interface tests to new module format
Ensure request always has params
Rest interface should assign response.data
Fix typo in Rest header population
Don't assign empty request bodies (breaks tests)
Rewrite RequestHandler tests as EventListener tests
Add check for NetworkingError in Client.retryableError()
Move FINALIZE_ERROR listener with other retry events
Fix off-by-1 error in RETRY_DELAY_SEND event
Fix typo in httpError emitter