VideoInput/VideoOutput: Reorganized mutexes and memory management.

This fixes several bugs triggered by deadlocks, but also by bad memory
management.

This part of the code should finally be reorganized, simplified and
updated. But the current fix largely improves things.
Audio/Video Cores: Added anoter get_devices method.

The new method returns a vector of devices represented by their string
descriptions.

The string description is used by the prefs and in various parts of the
program. The new method has the big advantage of having the same
signature whatever the core is unlike the former method which required
different arguments for each core.
Call Manager: Optimized code for individual changes of video options.
Assistant: Removed useless code.
Services: Define Service as a class instead of a Struct.

This is cosmetic but most probably more logical and intuitive.
GSettings: Use enum instead of int when possible.

Various GSettings key have been changed from int values to enum values.
(h.239 roles, video size, video format, H.323 DTMF mode, SIP DTMF mode,
...).

This allows GSettings to control input values and forbit unsupported
values. Also, configuration editors like dconf-editor are now able to
present the user with a nice drop-down with valid choices.

A new "Choice" preferences type has been added as part of the change to
handle the former int_option_menu and string_option_menu in an easy way.
Moreover, we are now using the new get_devices core implementation
instead of the various independant get_*_devices methods implemented in
device-lists.*. Those files can now be safely removed.