Improved merge sort

Exercise 2.1
Creates a function that allows elements of an array to be shifted
by 'h' places in O(n) time complexity and O(1) space complexity.
This function will further form the basis of the improced merge
sort that uses O(1) extra memeory space to run.

Code complete for exercise 2.1 but not tested.