Allow cancellation of pending requests with abort!

Each pending HTTP request (that is, each channel onto which a response map will eventually be put) is associated with its backing XhrIo instance in a stateful `pending-requests` map. Users can call the `abort!` function on the channel returned by `request` to cancel the associated pending HTTP request.

I'm not sure I'm entirely happy with this solution, mostly because it involves introducing state management and a new user-facing function to `cljs-http.core`, but it seems to be better on balance than anything else I can think of, and I wanted to put this out there for discussion even if it doesn't end up being merged as is.

Fixes #1.