fix($http): reject $http promise when timeout occurs

Previously, timed out $http requests would result in a fulfilled promise, rather than a rejection.
This CL corrects this unexpected behaviour.

BREAKING CHANGE:

Currently, request timeout is treated as a successful request. This is unexpected, as a timeout is
generally a failure, however it's possible some applications depend on this behaviour.

If your application depends on this, it's possible to migrate by simply moving the code which handles
a timeout into a rejection/error handler, rather than a success handler.

Example:

    $http.get('/some/slow/resource', {
      timeout: 1
    }).error(function(res) {
      if (res.statusText === "Timedout") {
        console.log("request timed out!");
      }
    });