Work on profiling cs520 prog5 (didn't actually change much) and wrote a
better function to setup blocks of memory

The setup_blocks function I had before assumed it could read the whole
buffer it was given, beyond the first buf_size bytes, this doesn't
actually work, since I read data from files in buf_size blocks, so I
can't access the next data untill I read the next block. So the new
function, well firstly it actually reads from files rather than just
taking a generic character buffer, but it also stores information about
the start of a word at the end of a buffer in an internal array and
completes that word when called again with the same argumnet. The
arguments are a struct internal_fileinfo with all the information needed
to read from a file and complete words, and a buffer to fill with
data. I think I might change the return value to be a struct containing
a buffer and a file bitmask so I can actually deal with the whole
multiple files thing that I've mostly been ignoring