Parse and serialise more frame types

Supply `parse/1`, which catches any errors thrown in parsing (e.g.,
`reserved_return_code`) so as to fully match the spec. This came up in
the spec test when it supplied a binary to `start/1` that happened to
actually parse to a `#connack{}` frame with a rogue return code.

Correct the `parse_result/0` type -- this also came up in spec
testing.