Refactor boundary between IceCube and Event class into intermediary object

And refactor things into files they should be in (like tests and the TimeUtil class).