Use compound disposables to avoid races and add some AR pools
Don't weakly capture the top-level compound disposable

This will prevent the sub-disposables from getting disposed properly
Wrap removing weak disposables in an autorelease pool
Merge branch 'bounded-compound-disposables' into disposable-optimization