race condition fixes and state cleanup
This feels like a relatively large change from a backend standpoint:
- entities that represent "attachments" (probe, super smoke, pellet level detector) will now report as "unavailable" when not attached. This fixes a condition where entities could be attached at integration startup, but not later on. The state takes a second or two to change when the grill is on.
- we no longer fetch state right at start - this means we wait till we've connected to aws iot mqtt before getting the state of the grill. This fixes a race condition where if it took too long to get attached to the mqtt, we would miss the state update. This appears to especially be the case for our friends not living in North America.
- entities that are only toggle-able when the grill is on (keepwarm, supersmoke) are now "unavailable" until the grill is in the state where they can be toggled
- finally, a lot of cleanup around grill state. most likely fixing various bugs where things would actually get out of whack.