When a stream is force-disconnected, don't restart its heartbeat timer.

Accomplish this in two ways:
  - Explicitly making sure not to restart the timer on disconnected streams.
  - Run the "restart heartbeat" code before processing incoming messages,
    not after, since even the "failed" message that caused a disconnect
    was running the "restart heartbeat" code.