Implemented SolutionFileIO

Actually there's one thing related to on/off events - I'm not pretty much sure what "shutdownPossible" represents. I thought it should be set to true if shutdown of a machine is possible after corresponding task finishes its job. Going through my report generated from the best solution made me a bit confused.

Output (ordered by startPeriod, picked for machine.id = 0)

task: 23, duration: 83, start: 15, end: 97, machine: 0, shutdownPossible: false
task: 185, duration: 40, start: 19, end: 58, machine: 0, shutdownPossible: false
task: 71, duration: 186, start: 20, end: 205, machine: 0, shutdownPossible: false
task: 141, duration: 111, start: 27, end: 137, machine: 0, shutdownPossible: true
task: 28, duration: 247, start: 37, end: 283, machine: 0, shutdownPossible: false
task: 0, duration: 159, start: 53, end: 211, machine: 0, shutdownPossible: false
task: 146, duration: 3, start: 63, end: 65, machine: 0, shutdownPossible: true
task: 133, duration: 8, start: 68, end: 75, machine: 0, shutdownPossible: true
task: 77, duration: 10, start: 71, end: 80, machine: 0, shutdownPossible: true
task: 113, duration: 70, start: 78, end: 147, machine: 0, shutdownPossible: false
task: 190, duration: 65, start: 98, end: 162, machine: 0, shutdownPossible: true
task: 2, duration: 53, start: 142, end: 194, machine: 0, shutdownPossible: false
task: 105, duration: 78, start: 148, end: 225, machine: 0, shutdownPossible: true
task: 129, duration: 109, start: 163, end: 271, machine: 0, shutdownPossible: true
task: 156, duration: 55, start: 228, end: 282, machine: 0, shutdownPossible: true

As for my current understanding of the problem, tasks 23, 113, 2, 129, 156 should make machine constantly occupied, therefore shutdownPossible should be set to false all the time (obviously not the case of e.g. task.id = 133). Is there some hidden magic behind? :-) Thanks!