Make the start up of the program a little more robust, including not let...

...ting the use select an input-only sound device.

Closes #18 
This would have been a good use case for boost::optional, if we were still using it.  I realise we don't have much choice here, but 'special' values :-1: