ObserveOn scheduled unsubscription

Proposed fix for #1241.

Some operators eagerly unsubscribe the chain in case of an error, however, this may prevent the delivery of the onError if it is run through the ```observeOn``` operator as the worker gets unsubscribed and may or may not reach the point where it emits the onError in the other thread. This change will schedule the unsubscription along with the event delivery and thus ensure that all events sent to observeOn prior to unsubscription will be delivered in the new thread.

Note that this change makes the unsubscription delayed and if event processing is slow in the new thread, it may take a while to happen; the original version just dropped any unprocessed work and thus was faster to terminate.