Implement race cancelation

For devices that reqiure a start message (DT-8000), canceling a heat
cannot cancel the race for the device. If that happens and a race
starts, it will be handled just like with other sensors that can be
triggered/started anytime: race times will just be ignored.

Because of this, Heat.current must become the source of truth for
knowing whether there is an active race or not, not the SensorState.

Closes #37