a binary protocol parser combinator