A lot of actual work on job control

I decided to just use alists as a temporary way of having an associative
array for jobs and job ids. Which helped me to start writing some code
for job control with job ids. I added a bunch of code but most of
what I've added should be explained in comments.