feat($http): Added method to abort a pending request. (2nd attempt)

Fixes issue #1159. Was pull request #1623.

Addressed issues brought up by Miško:

1. After calling .abort(), the promise is guaranteed to be resolved with a rejection (unless it has already been resolved).
2. The .abort() method now returns a boolean:
  - True - if successfully aborted (or already aborted).
  - False - if abort failed because the promise is already resolved.
3. Updated $httpBackend mock to support aborting.