Optimizations, now 50% faster

Changed the method of traversal for the bottom-up merge sort, then added an optimization where the two buffers are only pulled out once per "level" of merges, rather than once per merge.