Move mpd watcher connection into own type

To make it easier to implement reconnect-on-failure
Retry watcher connection on start-up
Simplify watcher connect code
Move mpd dependency and retry connect on fail
neater
Disconnect & reconnect watcher on error

This allows the app & the websockets to survive a network failure/mpd
restart/etc.
A slightly crude keep-alive for the client connection
less errors
On connect, send browser mpd's status so it can render it