Refactored to use value objects

- added TimeOfDay gem
- extracted Timespan
- extracted Duration