Refactor -invalidateGlobalRefIfNoNewSubscribersShowUp

Specifically, avoid block allocations (by avoiding variable capture), and only check RACActiveSignals once per run loop iteration.
Don't allocate RACSignal->_subscribers until needed
Avoid -tupleByAddingObject: in zip/combine

This reduces the number of allocations performed as the number of streams grows.
Factor out +zip: and +combineLatest: logic into 1 method
Manage active signals in a lock-free way
Remove temporary arrays and modify RACActiveSignals directly
Document thread requirements for RACActiveSignals
Reinstate comment about signal lifetime
Merge pull request #703 from ReactiveCocoa/lock-free-active-signals

Lock free management of active signals
Merge pull request #699 from ReactiveCocoa/optimizations

Reduce memory consumption, optimize zipping/combining