CamelDataWrapper: Add GOutputStream-based methods.

These will eventually replace their CamelStream-based counterparts.

New functions:

  camel_data_wrapper_write_to_output_stream_sync()
  camel_data_wrapper_write_to_output_stream()
  camel_data_wrapper_write_to_output_stream_finish()
  camel_data_wrapper_decode_to_output_stream_sync()
  camel_data_wrapper_decode_to_output_stream()
  camel_data_wrapper_decode_to_output_stream_finish()

Also added/adapted subclass methods in:

  CamelMimeMessage
  CamelMimePart
  CamelMultipart
  CamelMultipartSigned
IMAPX: Use GSubprocess to implement the shell-command setting.

GSubprocess returns separate input/output streams for stdout/stdin,
and therefore can't be wrapped in a CamelStream.  So this (hidden)
feature is broken until I can fully port IMAPX to GIO streams.

Also, GSubprocess is only available in GLib 2.39, so attempts to
use this feature with an older GLib will fail with a helpful error
message.
IMAPX: Add camel_imapx_server_ref_input_stream().

Returns the GInputStream for a CamelIMAPXServer, which is owned by
either a GTcpConnection or a GSubprocess.

The function doesn't actually return anything yet; just roughing in
the API.  Will make it work in subsequent commits.
IMAPX: Add camel_imapx_server_ref_output_stream().

Returns the GOutputStream for a CamelIMAPXServer, which is owned by
either a GTcpConnection or a GSubprocess.

The function doesn't actually return anything yet; just roughing in
the API.  Will make it work in subsequent commits.
IMAPX: Populate the input and output streams.

Still not used yet, but they're set now.  Will need to wrapper the
input stream in a custom GBufferedInputStream subclass for parsing.
IMAPX: Use GOutputStream instead of CamelStream.

This is the easier case.  Input streams need to be buffered and parsed.
Add CamelIMAPXLogger.

This is a GConverter that just echos data to standard output if the I/O
debugging setting is enabled ('CAMEL_DEBUG=imapx:io').  Attaches to the
GInputStream and GOutputStream.
Add camel_imapx_stream_nstring_bytes().

Replaces camel_imapx_stream_nstring_stream().

Produces a GBytes instead of a CamelStreamMem.  GBytes works better
than GOutputStream would because it can be reused without seeking to
the beginning.

This basically converts message fetching to use GIO streams directly.
Add CamelIMAPXInputStream.

Replaces the input side of CamelIMAPXStream.

Currently derived from only GFilterInputStream to keep the code changes
to a minimum until I can verify this works, but eventually would like to
derive from GDataInputStream for reading and buffering whole lines.

Unfortunately this requires switching all of IMAPX over at once, so this
is a rather large commit.
Remove CamelIMAPXStream.

No longer used.  We use CamelIMAPXInputStream now.