Tons of cleanup alongside a lot of new functionality. BotVac now provides an overall vacuum state as a single state, and can emit events to subscribers every time the state changes, as well as any lifespan or battery changes.
The BotVac can also now be created in a `monitor` mode, meaning the BotVac object will handle fetching initial state, refetching state after the BotVac goes offline then online, and regularly checking in on component lifespans.
All statuses are also now normalized so that the BotVac's reported statuses always match the names defined by the sucks library.
The _handle_error method was throwing a runtime error because it expects an XML element
The functionality in _handle_error is covered by _handle_ctl so it can be removed altogether
The capitalization adjustment was breaking any commands that required CamelCase, such as GetChargeState. Args are not needed for commands such as GetChargeState, so the xml will no longer build that array if it's set to None.