Remove overcomplicated SendAsyncObservable

We had to switch between Rx Cancelation Nature and TPL Cancelation
Nature a few too many times.
Add cancelation and memoization back in
Fix priority inversion in caching scheduler

Consider the following scenario:
1. We queue up a bunch of low priority requests, the last of which is to
http://foo
2. We then queue up a super high priority request to http://foo

Under the previous code, we'd return the low prio request since its key
would match, and the high-prio request would be slow.

In this suboptimal yet way simpler fix, we consider the priority as part
of the inflight key, which means that the low priority request still has
to wait in line, but it's highly probable that this will be a cache hit.
This also has the possibility that we could make concurrent Gets to the
same resource. Unfortunate, but the alternate is real damn hard to fix.
Fix bug where we broke cancelation

I don't want to talk about how long it took me to find this.
Merge pull request #109 from akavache/rewrite-http-interfaces

Rewrite backing cancellation code