Replace CompositeDisposable.pruneDisposed with a removable “handle”

Resolves #1535. I picked this route because it doesn't require keeping a reference to the added disposable, which can make accounting easier in general.