Merge-sort array between from and to indices

Worst case: O(n lg n), average: O(n lg n)

var a = [5, 2, 3, 1, 4]
default_comparator.merge_sort(a, 0, a.length - 1)
assert a == [1, 2, 3, 4, 5]

Property definitions

core $ Comparator :: merge_sort
	# Merge-sort `array` between `from` and `to` indices
	# Worst case: O(n lg n), average: O(n lg n)
	#
	#     var a = [5, 2, 3, 1, 4]
	#     default_comparator.merge_sort(a, 0, a.length - 1)
	#     assert a == [1, 2, 3, 4, 5]
	fun merge_sort(array: Array[COMPARED], from, to: Int) do
		if from >= to then return
		var mid = (to + from) / 2
		merge_sort(array, from, mid)
		merge_sort(array, mid + 1, to)
		merge(array, from, mid, to)
	end
lib/core/collection/sorter.nit:179,2--191,4