More Fixes (see details)

I've removed CPU/IODevice as a class, and made Device a class instead of
an interface. The way schedsim works now is it just keeps two device
objects (one called cpu and one iodev), the rest is the same with
respect to Devices. I did a lot of revamping, and I tried not to have
that many nested if-else statements if I could help it, but in many
places I couldn't help it. Hopefully I left enough comments to follow
what I'm trying to do. Some known bugs: multiple processes start with an
arrivalTime of 0 and this is messing with the comparator function,
though it might be the case that some processes are supposed to arrive
simultaneously.