CamelIMAPXServer: Parser cleanups.

Move public parser-related members to the private section.

Also, use a GWeakRef to share the parser thread's GCancellable.
imapx_command_start: Remove the GCancellable parameter.

Use the parser thread's GCancellable, not one from some CamelIMAPXJob.
imapx_select: Remove the GCancellable parameter.

No longer needed.
imapx_select: Remove the "forced" parameter.

Only ever TRUE in a chunk of disabled code.

Remove the parameter until we actually need it.
imapx_command_idle_stop: Remove the GCancellable parameter.

Use the parser thread's GCancellable, not one from some CamelIMAPXJob.
imapx_stop_idle: Remove the GCancellable parameter.

No longer needed.
imapx_command_start_next: Remove the GCancellable parameter.

No longer needed.
imapx_command_queue: Remove the GCancellable parameter.

No longer needed.
CamelIMAPXCommandFunc: Remove the GCancellable parameter.

No longer needed.
imapx_command_start() should not be failable.

This might by why error handling in CamelIMAPXServer is so confusing.

The imapx_command_start() function itself should not be failable.  If an
error occurs while starting the given command, stop the parser thread so
it disconnects from the IMAP server, and embed the GError in the command
structure with camel_imapx_command_failed().

I suspect this will simplify the IMAPX dispatching logic significantly.
imapx_select() should not be failable.

imapx_select() either does nothing or starts a new SELECT command.  But
as per the previous commit, imapx_command_start() is no longer failable,
therefore imapx_select() is also no longer failable.
imapx_command_start_next() should not be failable.

If we fail to stop an in-progress IDLE command, the parser thread and
all unfinished commands will terminate on their own.  Don't propagate
back a GError for this particular failure, because the caller is just
trying to enqueue a new CamelIMAPXCommand and doesn't really know how
to handle the error.
imapx_command_queue() should not be failable.

Same rationale as the previous commit; that merely submitting a command
should always work from the caller's point-of-view, even if it triggers
an out-of-band error in the parser thread.
IMAPX: duplicate_fetch_or_refresh() cleanups.
IMAPX: Don't pass GError when not checking for error.

Error checking around CamelDB and CamelFolderSummary calls are virtually
non-existent, but that's a mess for another day.  In the meantime, avoid
blindly passing GErrors where we don't bother checking for errors, since
that leads to GError overwrite warnings.
Return a GError in camel_imapx_job_wait().

Despite the improvements in commit dacf161, there is still a disconnect
in error propagation between CamelIMAPXCommand and CamelIMAPXJob in that
completed jobs are still not aware of whether they failed.

This commit lays the foundations for another attempt to bridge the gap,
this time by adding a means of setting an error on a CamelIMAPXJob with
camel_imapx_job_take_error().  We also break API in order to return the
error through camel_imapx_job_wait().

New functions:

  camel_imapx_job_take_error()
CamelIMAPXCommandFunc: Remove GError parameter and boolean return.

Callbacks should allocate a GError on the frame stack and hand it to
camel_imapx_job_take_error() before calling imapx_unregister_job().
sync_folders: Return FALSE on error.