Device listing

This starts with @Rugvip's device-listing work, and adds a bunch of fixes on top. Tested this on Linux (with a single video camera, and multiple mics) and Android (where there is a front and back facing camera).

In the long run, this should all probably be replaced with the new GstDeviceMonitor API, but should work for now.

For testing, test-self-view can be made to allow manual selection of sources via a #define (this is off by default, though).
Some namespacing here would be nice, or otherwise putting G_GNUC_INTERNAL attribute to the declarations. Otherwise there can easily be conflicts when doing static linking (all symbols marked not static are visible in static linking!)