Subscribe on gap

Changed @benjchristensen code a bit to allow cancelling a delayed async subscription. Fixed up the ```testNewSubscriberDoesntBlockExisting``` test: the original deadlocked due the synchronous changes to the subscription model.

In order to let the async subscription work non-disruptively, I had to add a ```delete``` method to ```CompositeSubscription``` which removes a subscription without unsubscribing it. This is necessary to not cancel an inner scheduler.

Unfortunately, some Async tests fail due to deadlock now.

This PR is not really meant for merge but only for demonstration purposes.