Minor improvements to resilience of Heartbeat Thread

Improvements include:

- The HeartbeatThread is now always daemonic, so it will not prevent the
Master or Worker from exiting.
- Any exceptions that propagate from the HeartbeatExecutor will be printed.
- `mIsShutdown` was made volatile, and `Thread.interrupt()` used, to ensure
  timely shutdown of the thread. Note that either one is sufficient, but
  without either of them, the JVM does not guarantee this thread ever exits.

Note that the first point should be the only actual change in behavior. If there is a reason that MasterClient and MasterInfo previously used a non-daemonic HeartbeatThread, please let me know.