Changed the error syntax to be more C like. Using constant named exceptions separated into their own namespace. Removed the old SystemCallException in favour of more specific errors.
Updated IO to throw relevant exception when attempting to read a non-existant file. Also updated helper to ignore this exception when attempting to read the log file in a loop. Moved interrupt exception back to IO lib due to the nature of it being relevant to what IO is doing.
Updated Signal lib to throw C like errors and removed the interrupt exception (now in IO lib). Implemented block/unblocking of signals. Updated test cases.