support dynamic lircrc updates

-this implementation is slightly flawed due to its use of the internal
lirc socket/signal mechanism for asyncronous checking of the config file
stat mtime. it requires a lirc signal to perform the check and
potentially re-read the config file. when it does re-read the file, the
fractions of seconds it take to do so are enough to make the lirc
command timeout*. so following a config file change that you want
reflected in the currently running process, send a dummy signal (e.g.
irsend SIMULATE "0000000000000000 00 DUMMY remote-control-name") to lirc
as a work around. failing that, just be aware that the next lirc signal
will be consumed silently

-the correct way to perform this config update is to wrap the current
lirc_readnext loop in a custom socket/signal routine. performing the
check whenever socket i/o occurs, and then calling using lirc_readnext
loop to iterate through any/all codes waiting in the socket

*it is the extended time between reading the code from the socket
(lirc_readnext), and requesting the lirc daemon process the command and
return an action (lirc_code2char -> lirc_send_command) that appears to
cause the lirc timeout

-in spite of the lirc boiler plate code used, i don't think that lirc
failing to process a command should be terminal for the application,
thus this has been changed