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 https://bugs.python.org/issue38938
(thanks Raymond Hettinger for the basic implementation idea)

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