Automatic cleanup of nested subscriptions

Subscriptions created inside other subscriptions are disposed when an
outer subscription is disposed, or when an outer subscription is
reevaluated.