Recover from partial or corrupt messages

I got bitten by 0076c0c.  Note to self: NEVER catch all exceptions.  While
I thought that the hardware got stuck, the software was just ignoring and
getting stuck on a single partial message.  Sigh.

Now, the software detects and recovers from various partial message
errors.