-shareWhileActive

This behaves like `RefCount` in Rx, _temporarily_ multicasting a signal while there are subscriptions to it, disposing of it when there aren't, and being able to do this any number of times (unlike `-autoconnect`).

These commits were cherry-picked out of #874, since that keeps getting delayed and refocused.