msort

## TODO
- [ ] Merge sort by merging the runs 2 at a time? I was lazy and merged them all at once.
- [ ] The mem_capacity is the total allowed memory during the sorting. Your program should not allocate memory exceeding the memory capacity. You may use [valgrind's massif tool](http://valgrind.org/docs/manual/ms-manual.html) to track your memory footprint.
- [ ] Looked fine in several test. Write ones for low memory, k values, etc...
- [ ] Don't do sort if we don't have enough memory, quit with an error if the value they give is simply too low (or augment what I did to require less memory).