1. Fix for negative overshoot estimator: substract overshoot from temperature when cooling. This error was introduced by an earlier optimization.
2. Introduced new states:
WAITING_TO_COOL, WAITING_TO_HEAT:  waiting in 'idle' due to one of the minimum off times
WAITING_FOR_PEAK_ESTIMATE: off times allow switching to heat/cool, but waiting for a peak detect
 COOLING_MIN_TIME, HEATING_MIN_TIME: minimum cooling and heating time not reached yet.
3. Refactored tempControl.updateState(). Fixed error that beerTemp was checked even in fridge constant mode. UpdateState() now also calculatres the waitTime, which is printed on the LCD as countdown timer.
4. Added printing of new states + countdown timer to DisplayLCD. Removed printing 's', doesnt fit with some of the new states and is redundant if you see it update every second.

To the new states: after reset, set to fridge constant low/high. Keep in mind that the idleRanges are in effect, so set the temp at least 1C from current temp. Then set to just below setpoint. Try setting it to heat, just after cooling. Try manipulating the sensor so it needs to heat first, then cool, etc.
You can get the state with 's' and the current estimated peak with 'v'.

Next step: space optimize some of the new code, especially LCD printing (common substrings/spaces)