Add STARTING_STOPPING state, use flags for reasons disabled
This branch allows plugins to return multiple reasons why they're disabled, and adds a new STARTING_STOPPING state.
The Bluetooth plugin is now considered inactive rather than disabled if there's no Bluetooth adapter. (We can change this, but I think it's simpler if we only use the disabled state when the plugin's disabled due to settings.)