Enable UserConfigWatcher to be shared across threads
Enable UserConfigWatcher to be shared across threads

We need to wrap the `states` `HashMap` in an `Arc<Mutex<...>>` in
order to share a `UserConfigWatcher` across threads. This will allow
us to remove watchers from futures running on a threadpool.

It must be a `Mutex` because the `Sender` and `Receiver` members of
`WorkerState` are not themselves shareable across threads, so we need
to ensure exclusive access.

Signed-off-by: Christopher Maier <b4598f17a90ef80817bae8ad6c37249740caafb4@chef.io>

habitat-sh/habitat,habitat-sh/habitat,rsertelon/habitat,habitat-sh/habitat,rsertelon/habitat,rsertelon/habitat,habitat-sh/habitat,rsertelon/habitat,rsertelon/habitat,habitat-sh/habitat,rsertelon/habitat,habitat-sh/habitat,habitat-sh/habitat,rsertelon/habitat,habitat-sh/habitat