added a watchdog to recover from dead connection to webapp

A failure mode that I have noticed for a while is that
the webapp will report that it has lost its connection from
the builder thread(s), but the builder thread is unaware
that this has happened, and is blocked waiting to receive a
problem id / keepalive signal from the webapp.

To work around, each Builder2Server task has a watchdog thread
that checks to see how long it has been waiting for the
problem id / keepalive, which the webapp should send approximately
every 5 seconds.  If the wait time has exceeded a maximum
(currently 1 minute), then the watchdog forces a reconnection
by closing the socket (breaking the server loop out of its
wait.)