added function to mmu to check if memory is available. It seems to
provide the cleanest solution for "load" ugh, not happy. However, I am
not changing how I allocate and deallocate my PCB's base / limit at this
point. In short - to make sense I was allocating memory to PCB's that
might not load and not freeing that memory location. When I switched it
up a bit, then I wasn't checking properly if the memory was available
before trying to allocate it -- causing issues too. So, that is my
solution, make a function in MMU that will tell us if there are any free
space. I also moved some of the validate portion of the code to its own
function.

Need to fix Kill as it does not check to see if A) a process exists (or
ever existed for that matter) or B) no longer exists...

After that fix I will go back and comment / clean up the code.