refactor merge to allow late discovery of sources

@caolan here is a PR for a refactor of merge that passes all tests but avoids the toArray pre-buffering of sources. Tell me what you think.

this is related to issue https://github.com/caolan/highland/issues/132