Clean up inner disposable code a bit
Don't add inner switch disposables to the compound disposable

This can result in linear memory growth, and we have enough information (namely, a mutable reference to the inner disposable) to add only a single one.

@joshaber
Make dispose return () instead of a Bool
Minor code cleanup