Prefs: Device selection errors are now handled by the appropriate core.

Remove/Update/Add device methods were adapted accordingly.
VideoInputCore: Optimized fallback selection.
Device: Extended definition to add convenience constructor.

It is easier and nicer than using the class like a C Struct.
AudioInputCore: Added device auto-selection algorithm.

The responsability to choose the best device for the user is now left to
the Core. The Core will select the best default device in case the
choosen setting is invalid.

On Linux, we respectively prefer PulseAudio, then ALSA, then the first
available device if the others are not found.
AudioOutputCore: Added device auto-selection algorithm.

The responsability to choose the best device for the user is
now left to the Core. The Core will select the best default device in
case the choosen setting is invalid.

On Linux, we respectively prefer PulseAudio, then ALSA, then the first
available device if the others are not found.
Prefs: Fixed and improved layout, usability and simplified code.

Fixed and improved layout:
 - Use GtkGrid everywhere in a dynamic way (no more GtkTable alike
   code).
 - Got rid of the complex subsection code which was containing a
   GtkFrame, which was containing a GtkTable/Grid for each subsection. A
   subsection is now just a label.
 - Made sure widgets get correctly aligned.

Simplified code:
 - Due to the above changes.
 - Simplified the internal API.
 - Merged string_option_menu_* and int_option_menu* methods.

Improved usability:
 - Use settings formatting like "Maximum video bitrate of" WIDGET "kbits/s"
   instead of "Maximum video bitrate of (in kbits/s)".
 - Improved the video size popup to contain a text description instead
   of the plain old size described as a pixels width and height.