Use `Mutex` lock on signal querying

This renames the "state" to "signal" and uses a `Mutex` to lock
the reading and writing of it. The renaming is a better name than
the "state". This value represents the last command or signal that
was sent to the server, not it's current state. Locking the
reading and writing of the state ensures that it is thread-safe.
It's common for multiple threads or signal traps to modify the
signal while the server's work thread is checking it as it loops.