Refactor combinator architecture

This is another substantial refactoring.  However, this does not change anything fundamental about how most.js works.  It establishes a modular architecture that allows combinators and their unit tests to be coded separately from the core stream type, ie avoiding the "one big file" problem.

The main most.js module aggregates all of the combinators into the public API.

This also adds zip and merge combinators.