Let CaptureSession::setDevice() check if device is initialized and
ready before proceeding. Also it will stop if session is running and
it will clean up any existing input device, if present.
If a previous output device is present when asking for snaptops then
destroy it and recreate.
Reuse the output device handle as much as possible and cleanup
everything (except the session) when setting a new device.