phase-list: expose zipmerge via a public API

Expose the implementation of phase zip-merge algorithm via a public API.

A part of https://github.com/strongloop/loopback/issues/895

/to @raymondfeng please review
/cc @ritch 
I don't think the discussion is to decide if `toposort` is better. IMO, the best interest is to make the ordering rules easy to define and understand. Between the two choices below:

1. zipMerge(['start', 'end'], ['first', 'start', 'end', 'last']);
2. zipMerge(['start', 'end'], ['first', 'end', 'last']);

I prefer to use 1 instead of guessing the order of `start` and `first` from 2. It's not intuitive and I cannot figure out without reading the documentation.