soup-message-io: Use GConverterInputStream for content-decoding
Decode Content-Encodings by wrapping a GConverterInputStream around
the SoupBodyInputStream.
Because we want to be able to fall back to passing data through
undecoded in the case that decoding fails, we need to use a GConverter
wrapper (SoupConverterWrapper) that implements that.
The old soup-message-io code was automatically stopping decompression
when it reached the end of the response body, without checking that
the compressed data was actually whole at that point. Fix that.
However, this breaks the previous hack used for the zlib-to-raw
fallback, since the raw data won't have a checksum at the end.
So do that differently now.