[#2] Add persistent command queue to worker

The persistent command queue ensures that a command has been completed
(through response from the supervisor) before removing it from the
queue.  This allows the worker to continue, even if the connection to
the supervisor is temporarily disrupted.  See #2.

N.B. The supervisor still must be modified to persist worker states
after shutting down, since (at least some) commands are not processed
properly unless a worker is registered with the supervisor.  Currently,
in the event that the supervisor is killed and restarted, all worker
registration data is lost.  See #3.
Fix worker logging