rework merge worker to do use an ad-hoc bounded queue rather than
erlang's default queue implementation.

also hibernate the process when a queue item is removed to expedite
GCing and resizing the heap.
normalize input and don't resort sorted lists.