Refactor internals to use event based callbacks

Major changes:
(X) = backward incompatible

* (X) Removes promise API features on AWSRequest (.data, .done, .fail, .always)
* (X) Renames AWSRequest/AWSResponse to Request/Response
* Make Request an EventEmitter object, responding to .on/.addListener interfaces, events are:
    - validate
    - build
    - sign
    - send
    - httpHeaders
    - httpData
    - httpDone
    - retry
    - error
    - success
    - complete
* (X) All client classes now extend from `AWS.Client` and use event registration to determine their service interface
* Moved client subclasses into `AWS.ServiceInterface` namespace implementing the three methods:
    - buildRequest(request)
    - extractError(response)
    - extractData(response)