Corrected and improved `merge_sorted` function.

The same approach as before is used, but the following improvements were made:
(1) Don't use Queue module!  Queue is meant for threaded applications, and the
    performance sucks because queue methods need to lock and unlock mutexes.
(2) Use heapq module instead of Queue module.
(3) If no key is specified, then use `heapq.merge` for improved efficiency.
(4) Corrected priority of item comparison so values from earlier iterables will
    come before later iterables.  The order of comparison was changed from
    [key(item), item, itnum] to [key(item), itnum], where `itnum` is the index
    of the iterable.  Note that we don't need to--and shouldn't!--use `item`.
    To clarify, the problem with the original implementation is `item` comes
    before `itnum`.
(5) Added more tests for my sanity!
`merge_sorted`: improved documentation, comments, and tests

The new tests check that sorts are stable such that when multiple items have
the same key, their original order is preserved.  An alternative implementation
of `merge_sorted` with a key as discussed in #58 is shown as a comment in the
code, because it may be more understandable to some developers.
`merge_sorted`: oops, use floor division in tests for python 3 support
`merge_sorted`: oops, forgot the doctest.  Thanks Travis CI!
Merge pull request #58 from eriknw/better_merge_sort

Corrected and improved `merge_sorted` function.