Reduce logging overhead

In 0.3.5 release while examining #114, I noticed a large number of `clock_gettime()` and `gettimeofday()` calls, along with `connect()` to `/dev/log` for each syslog message. Additionally I found multiple open file descriptors for the same log file (one per listener) and callgrind indicated a significant portion of time was being spent in `strftime()`.

This pull request improves the handling of log files by sharing file descriptors between logger objects logging to the same file (with potentially different priority filters), using a single persistent syslog socket and specifying the facility on each logging call, and caching the timestamp string for the current second. Additionally, I improved the log file rotation by reopening log files on SIGHUP.