Audio/Viceo: Let the engine handle unexisting devices.
Devices: Removed desired_device and simplified code.

The desired_device code was correct. However, it was complex and
probably useless.

With the simplification, if the user configured the headset as default
device, and the headset is not present, it will fallback to another
device. If the user plugs the headset, the user will get a popup asking
to use it or not. The desired behavior is still good.

This allowed moving the device selection from the prefs window to the
engine.
Prefs: Fixed devices list update and removal.

The default device choice is left to the appropriate core which is the
only one able to do it.