Alost there. One test failing. Have to go.
Debug: Print arrays
Notes
Revert "Debug: Print arrays"

This reverts commit 31731f281705c2f785db61936447c82279d323ff.
Refactoror MergeSortRecursive()

Simplify a lot the algorithm. Don't play with indices that move all around.
Instead, make a temporary copy of the right element to move, than move
all elements between the right one and the left one (including it) one
location to the right. This frees one place at the location current
location. The put the temporary copy of the right element in the empty
spot.

Note that this uses memmove() since the destination and the source overlap.
Additionally, no copy operator is called as a low-level binary operation is
performed. If the template "T"'s datatype contains a pointer to an element
of the list, moving around the elements will not update them.
Cleanup: removed wrapper that passes the original array around.
Merge branch 'mergesort_recursive'

Optimization to MergeSortRecursive(): don't allocate memory the size of the original array.