Added new feature to abort a pending request. Fixes issue #1159. (2nd attempt)

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.