This module implements a simple top-down merge sort. The temporary buffer
is preallocated to 1/2 the size of the input array, and shared through
the entire sorting process to ease the amount of allocation performed in
total. This is a stable sort.