Clean up message parsing

* `UpdateHandler`: Always respond for bad and incomplete primary keys.
* Simplify `isPingBody`. Use `json.Compact` instead of hand-tokenizing the byte slice.
* Fix an issue that treated arbitrary one-byte slices as pings.
Is there a unit test that can show that this was problematic before, but this fixes?