Use size types to index arrays

Switch from using integers for array indexing to using size types
instead. This will guarantee us to be able to sort arrays of any given
size without overflowing and gain a certain degree of portability. In
most cases, ssize_t is used since arithmetics performed on the indexes
may lead to a result less than zero.
Implement the Heapsort algorithm

Add functions used to operate on heaps in the heap.hpp file. These
functions support returning parent, left child, and right child to a
given node, as well as maintining the heap property for a given node,
and making a heap of a given vector. These functions are then used by
the Heapsort algorithm to sort a given vector in place using O(n log n)
time.
Add unit tests for the Heapsort algorithm

Add unit tests for the Heapsort algorithm in the same manner as the
previous ones. Also, change the isSorted function in SortingTest to use
C++'s native implementation instead.
Add measurement for mergeSort to SortMeasurement