Cancel request

If anything is written to the channel given as :cancel-channel option,
the xhr request will be aborted if it's not completed yet.

Don't merge yet! I created PR so it's easier to comment the implementation.

I managed to write a test for this though but I haven't tested this in a real project yet.
I'm not quite sure if it's a good idea to skip putting the response to channel when request is aborted. Perhaps the response map should instead contain the error code etc. so users can themselves check what happened?