Broke threading code for cs520 prog5 into seperate library, fixed some
bugs in prog5.

The most annoying bug was the the futex syscall apperently takes the
timespec argument by value, because if I don't clear both rcx and r8 I
get an error relating to the timer argument in some way. It took a while
to figure that out, but that should probably fix a few bugs.

I also worked out some issues in adding words on block boundries. I've
realized I don't set file bits for words on block boundries so I need to
add that in.
The next thing I need to do is figure out some issues that are going on
when I try to sort the words at the end, it has something to do with the
file bit fields, so I'm going to do a bit of playing around to figure
out how int128's work and then try and fix that.