Add support for incremental decoding

Decoding multi-byte encodings such as UTF-8 pose difficulty for
streaming I/O as one must take care to carry the decoder state between
incoming chunks. Here we introduce `decodeUtf8With'` which exposes an
interface similar to that provided by cassava's `Data.Csv.Incremental`.
To do this, we adapt the C UTF-8 decoder to expose its automaton state
and codepoint accumulator.
Properties: Add round-trip property for incremental decoding
cbits: Mark const pointers as such

const needs to come after the * to mark pointer itself as constant.