Calendar usage optimizations:

Avoid creating new calendar objects for comparison in game::update_scent

"player_last_moved + 1000" creates a new calendar object (and calls calendar::sync), just for comparision.
Instead just compare the turn numbers.

Cache season length in calendar::sync

Replace calendar operators with compiler generated ones

Compiler generated assignemnt and copy functions are fine.
This also avoids calling sync for no good reason, one can assume that the assigned object is already synced.

Make sync protected, no need to call it from the outside, the calendar itself will call it when needed.

No sync call in calendar::textify_period, the object is already synced.

Remove calendar::getHour, use calendar::hours instead, because
- it returns the same value,
- it's const correct,
- it's name is consistent with the other accessor functions,
- most importantly: it does not call `calendar::sycn`.