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.

In addition to incremental parsing support, the patch also adds a property testing the decoder by round-tripping a string with arbitrary chunk size.