Handle malformed numeric

Throw a SoupBinTCPException instead of a NumberFormatException.
Handle negative numeric
Add heartbeat timeout event

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