factor out preview widget
use PreviewWidget
give visual feedback when initializing source

also fix a typo left from previous refactor
map previews using source instead of index
adds file output sink
outputs: factor out some common code
fixes gtk warning
fixes regression introduced by e96226813bcf858adc74fe87cbfdb0e4ceafa77c.

handling of device connections and disconnections no longer worked
PreviewWidget: set xvimagesink to async
core: properly emit prepare-window-handler signals
react to prepare-window-handle signals instead of manually setting the
overlay target
go to NULL when there are no more cameras

This will force a renegotiation when/if a new one is connected and also
avoids stalling the sinks
MP4Output: use new caps, get settings from config.
MP4Output: add tees for stream archiving
outputs: adds stream archiving functionality
core: expose file recording functionality of sinks