Remove leftovers from Protocol 1.0

The has_name() method was replaced by the has_device_identifier() method
in the transition from Protocol 1.0 to Protocol 2.0.
Refactor plugin destroy() and destroy_ui() methods

Instead of calling the destroy() method directly and have it call
destroy_ui() in turn, add a destroy_plugin() method that calls
destroy() followed by the code from the destroy_ui() method. This
way the destroy() method of a plugin can be empty if there is nothing
to destroy. This matches better how the start() and stop() methods
work.

Also move the try/catch/pass block from the callsides of the destroy()
method inside the new destroy_plugin() method.
Move plugin state tracking and start/stop/pause/resume logic into PluginBase class

Add new start/stop/pause/resume_plugin() methods that do the state handling
and call the original start/stop() methods as needed.