Introduce incremental UTF8 decoding interface

This patch introduces an incremental interface to text's UTF-8 parser. Among other things, this enable proper streaming decoding for libraries such as `pipes`. I'm certainly open to suggestions for the names of the exposed interfaces. I feel `decodeUtf8With'` is quite cryptic but I couldn't see another option that isn't too long for my taste.

In addition to incremental parsing support, the patch also adds a property testing the decoder by round-tripping a string with arbitrary chunk size. It also clears up a few issues regarding C's `const` pointer syntax.

Currently encoding errors are handled the same way as in `decodeUtf8With`. Another approach would be to add an error constructor to `Decoder` although I couldn't see enough compelling reasons for this to break with tradition.