Add heartbeat timeout event

Instead of throwing an exception on heartbeat timeout, invoke an
appropriate method on the status listener.