Start work on propagating dispose for combined streams
Simplify dispose architecture

Instead of End events having to carry a disposer *and* stream.beget
having to carry it forward, now only stream.beget needs to carry it
forward.  That simplified step.js a good bit as well.

Added disposer wrapping/propagation to both zip and merge.  Still need
to add that to switch.