Wraps an OutputStream, producing a new stream that will pass along at
most n bytes to the wrapped stream. If more than n bytes are sent to the
outer stream, a TooManyBytesWrittenException will be thrown.

Note: if more than n bytes are sent to the outer stream,
throwIfConsumesMoreThan will not necessarily send the first n bytes
through to the wrapped stream before throwing the exception.

If a chunk yielded by the input stream would result in more than n bytes
being produced, throwIfProducesMoreThan will cut the generated string such
that exactly n bytes are yielded by the returned stream, and the
subsequent read will throw an exception. Example: