Make the random iterators not cache their data.
Prevent auto-boxing where possible.
LinkedList -> ArrayList
Create the collections as already unmodifiable.
No real need from TreeMap.

Significant performance improvement.
Schedule cache is created unmodifiable.
Fix SolutionIO test after we've slightly altered the time calculation
mechanism.
Only re-cache the schedules that have actually changed.
Better cache handling.