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:

```js
$http.get('/some/slow/resource', {
  timeout: 1
}).
  error(function(res) {
    if (res.statusText === "Timedout") {
      console.log("request timed out!");
    }
  });
```

Fixes #7686