Merge sort using implicit parameterization

We use implicit parameterization to generalize the type T, of the list
we are merging