Calendar performance enhancement:

- Use of compiler generated assignment and copy functions avoids calling `calendar::sync`.
- Replace usage of `calendar::getHour` with `calendar::hours`, it returns the same value, it's const correct, it's name is consistent with the other calendar functions, and most importantly: it does not call `calendar::sycn`.
- Cache season length in `calendar::sync` instead of calling it 3 times.
- Avoid creating new calendar objects for comparison in `game::update_scent`: `player_last_moved + 1000` creates a new calendar object (which calls `calendar::sync`), just for comparison. Comparing the turn numbers directly if way faster.