+htp #15910 import coding infrastructure from spray

Fixes #15910.

This still needs some tests but the implementation is itself is ready to be reviewed.
Maybe the more general solution here would be to given `HttpEntity` a `withDataBytes(Publisher[ByteString])` method in addition to the `dataBytes: Publisher[ByteString]` we already have?
Then `mapDataBytes ` becomes only one simple application of that method...