feat($httpBackend): add support for timeout promises

If the timeout argument is a promise, abort the request when it is
resolved.

Closes #1159
feat(mocks): add $httpBackend timeout promise support

Update the mock $httpBackend service to handle promise timeouts.
test($http): add timeout promise test

Add higher level test to make sure timeout promises work with $http.