[dep] Bump dependencies to the latest version
[minor] Added missing keywords
[refactor] The `this.request` now has a much simpler API structure.
[minor] Using strict mode in the module now, it caught some small pitfalls
[minor] Small optimazations to the createClient, no pointless event listeners are added
[minor] Removed pointless require statements and made the code style more uniform.

The reason for this refactor is that we need to support different remoteApi's for the
applications as they can be hosted in different data centers.
[datacenter] Make the request method datacenter aware
[minor] Removed the `res.statusCode` code smell

Applications that are hosted in different datacenters need to be called at their
correct endpoint. The cloud details are inside of the app documents so we need to fetch
both the endpoint resource and the app document before we know which datacenter we
need to hit for the given change.

The statusCode was introduced in commit 9cea32719a797bbd769eaa89ea7cfab85c7f345d but
Avian has no memory of why he did it. So i'm removing it to prevent possible breakage
when you expect that the result is always an object.
[refactor] Use the new request signature
[refactor] Have the `upload` method use the same API signature as the `request` method.
[refactor] Make the `upload` method use the `request` API instead of duplicating code.
[fix] Re-adding deleted start call. The progress bar should be working again nao.
[api] Add a dedicated method for handling multiple clouds

Because multiple routes are affected by these changes.
[minor] try to warm up and refresh the endpoints when ever possible
[minor] Make the cloud functions re-usable, so we could re-do the operation incase of failure
[minor] Make some routes cloud compatible
[fix] this.cloud -> this.clouds
[fix] removed a pointless cloud call
[fix] Double array responses have been fixed.
[minor] Set the correct API endpoint before we set a new datacenter location
[fix] Fix the test suite again by adding endpoint references
[fix] Added missing callback
[doc] Rewrite the README.md to include more documentation
[doc] Fixed the hashtag references
[refactor minor] Remove duplicated code in `this.cloud`. Host `Apps.prototype.endpoints` to `Client.prototype.endpoints`
[fix] When only one cloud is passed to `Client.prototype.cloud` then respond with an unwrapped result.
[fix] Defensively program against unknown providers and datacenters.
[fix] Add missing `!`
[api] Accept cloud information in `Apps.prototype.start`.