Mixin XHR properties before and after opening request

As suggested by @fidian in #79, withCredentials needs to be mixed into
the request before opening. IE requires that timeout be set after opening
the request.

Now request.mixin values are mixed into the XHR object before before and
after calls to xhr.open(). Errors setting properties (like timeout in IE
before calling .open()) are ignored.
Speed up Travis-CI builds

- leverage docker containers (sudo: false)
- cache npm installed dependencies
Normalize response values from HAL objects

Embedded and linked entities now implement the ResponsePromise interface.
Unlike linked relationships, only the entity is populated since no HTTP
request is made.

Significant changes to the `rest/util/responsePromise` were required in
order to interoperate with lazy promises. Rather than creating a
ResponsePromise type that extends when.Promise, the additional functions
are mixed onto the current promise.

Fixes: #92