added abstraction to handle work monitor similarly to build monitor, added basic work monitor ui and sound on failed build

still need to polish the tmMonitor on the client side, especially wrt how connection state is managed, and a lot more work on the server side.