Clean up subscribeToExpressionChain

Why: I'm having still some stability problems with WhenAny
and looking into the code for processing the expression
chain I found it to be overly complex with nested subscribes
and disposes the logic of being hard to follow and debug.

How: Use idiomatic RX patterns for dealing with nested
observables. Specifically the Switch method which will
switch between child observables when a root observable
generates an event and then flattens the event stream.

Result: All but three tests pass and I'm not sure what is
wrong with those. Perhaps you might take a look at the
three failing tests as the fix might be more obvious
to you.