prefix: line prefixer stream

streams::prefix provides an [[io::stream]] implementation which provides a
line prefixer. A common use case is to prefix lines with an indentation
level. The user can add prefix tokens with [[add]], and remove them with a
LIFO manner with [[pop]].

Codegen methods are generally designed as recursive functions. The API is
intended to help maintaining the indentation in a easy way for this
use case.
