!str #15236 new transformer

This is far from finished, but I need to discuss.

The end goal of this is to provide a powerful, efficient, low level API for custom transformation operations. It is supposed to replace `Transformer`.

So far this is only using the API of the `impl.fusing.Op` (and subsclasses). These will be made more user friendly where needed. We can also consider providing higher level API that is more convenient for certain type of operations.

As first step I'm replacing all existing `Transformer` usage.

I'm currently stuck in `HttpEntity` and we must discuss how to go forward there. @jrudolph @sirthias should be part of that discussion.
Two questions regarding the plan with special-casing here:
 * As I said above `transformDataBytes` is seen as user API to allow easy rewritings of the entity data stream for whatever reasons. Encoding/decoding and the Range manipulation are just the two internal usages we can currently think of. Will the `ByteStringTransformer` be public API so that everyone can use it? What if the user wants to define the manipulation using stream combinators or a generic `Transformer`, will there be conversion functions to allow those?
 * Encoding and decoding functions currently live in akka-http but someone already suggested to pull them out to streams to allow easy gzip compression for any ByteString streams. Once this is done, encoding/decoding will probably be defined in more generic terms than the special `ByteStringTransformer` here. How will we be able to use it here. Or, will the `ByteStringTransformer` then have to move into streams as well?