ignoring object files
implemented a queue data structure
Updated Queue.

- There was a bug in the queue, fixed.
- Added more tests.
- Added a q_remove(...) function which is like a doubly linked list remove.
- Nodes now store pcb pointers instead of generic void * pointers.
Added all files.

- RR scheduler still doesn't work...
Completed w8 Lab.

- I think this is correct... I do have a problem with the sigtrap START. Turns
  out it treats START as a tick so when a process says tick 1, it's really tick
  2. I don't know if this is correct so I'll have to double check this later.

  Another thing is the SIGINT print "isn't" a tick. So when it says tick N then
  SIGINT, I suppose we could treat that as just a single tick. It's not
  consistent with START being a tick but SIGINT not which got me a bit
  confused.

  One last thing, since we usually have 2 active processes running (parent
  and child process - not paused), when we sleep(1) in the parent, that's there
  as a "rough" way to sync timers with the child process.

  This means if we run the algorithm multiple times, the results may vary
  (however only slightly). Again, I don't know if this is the correct method
  of doing things but the results are very very close to the graph depicted on
  the course website.

- Updated queue functions. I've added a q_print function that's more or less a
  __repr__ on the queue struct. I think there was a bug somewhere as well. That
  was fixed too.

- Updated README.