Reimplement heapq.merge() using a linked tournamet tree.

This method saves "<" comparisons in almost all cases,
especially when one iterable wins repeatedly. It also
eliminates the "==" comparisons required in the tuple
comparisons of the previous algorithm. Sort stability is
maintained by the structure of the tree rather than by
storing indices.

This follows
(thanks Raymond Hettinger for the basic implementation idea)

branch : heapq_merge
2 jobs for branch/heapq_merge in 8 minutes and 36 seconds (queued for 1 second)