Replace removeDisposable with pruneDisposed

This allows CompositeDisposable to be implemented without depending on
some notion of equality or identity across its children.
Use structs for disposables to minimize thrashing

This kinda breaks the rules around value types, but it’ll be important
when we have thousands of disposables being built up and torn down.
Inline spinlock management into Atomic

2 heap allocations per atomic variable now become 1.
Replace removeObjectIdenticalTo with Bag type

We only need the capability to add objects, enumerate them, and then
remove a particular object that we added before.

This lets us skip boxes for every element, which should be a huge boon
for heap usage.
Remove NSLockingExtensions
Whoops, add Bag to iOS target too
Add Signal.apply