Move all heartbeat code out of messagePump

messagePump only uses the Channel to send heartbeats