Refactor Hours

Pulls complicated hour -> event logic into a PORO.