Refactor sending of IMAP4 literals, add logging

* elmo-imap4.el (elmo-imap4-send-command): Refactor sending of
  literals, add logging.
Factor out creation of IMAP command tag

* elmo-imap4.el (elmo-imap4-command-tag): New function. Return IMAP
  command tag.
(elmo-imap4-send-command): Use new function to obtain command tag.
Factor out waiting for server response when parsing

* elmo-imap4.el (with-elmo-imap4-session-process-buffer): New
  macro. Execute BODY in a sessions' process buffer.
(elmo-imap4-command-tag): Use new macro.
(elmo-imap4-session-wait-response-maybe): New function. Wait for
  server response when in parsing state.
(elmo-imap4-send-command): Use new function.
Factor out function to send string to session process

* elmo-imap4.el (elmo-imap4-session-process-send-string): New
function. Send string to session process, facoted out from
`elmo-imap4-send-string`.
(elmo-imap4-send-string): Use factord out function.
(elmo-imap4-send-command): Use new function to send to process.
Use list to build final command string

* elmo-imap4.el (elmo-create-folder-plugged): Remove leading and
trainling space from IMAP command particle.
(elmo-imap4-session-select-mailbox)
(elmo-imap4-session-unselect-mailbox, elmo-imap4-clear-login)
(elmo-imap4-server-diff-async, elmo-imap4-folder-status-plugged)
(elmo-folder-list-subfolders, elmo-folder-delete)
(elmo-folder-rename-internal, elmo-imap4-copy-messages)
(elmo-folder-delete-messages-plugged)
(elmo-imap4-folder-diff-plugged, elmo-folder-open)
(elmo-folder-create-plugged, elmo-folder-append-buffer)
(elmo-folder-next-message-number-plugged)
(elmo-message-fetch-field): Dto.
(elmo-imap4-send-command): Use a list to build final command string.

Building a list makes it easier to ensure that there is only one SPC
between the command particles.
Remove trailing spaces from search particles

* elmo-imap4.el (elmo-imap4-search-build-full-command): Simplified.
(elmo-imap4-search-generate-vector)
(elmo-imap4-search-generate-and, elmo-imap4-search-generate-or):
Remove trailing spaces.
Don't use string-empty-p to check for empty string

* elmo-imap4.el (elmo-imap4-send-command): Don't use string-empty-p to
  check for empty string.
Make wl-highlight-message use the citation depth for choosing the face.

Rather than using a stateful algorithm for choosing arbitrary but
distinct faces for the various citation prefixes in the message,
this uses the citation depth for plain citations and an arbitrary
hash of the attribution name for SC-style attributions.
Implement draft highlighting using jit-lock-mode.

This uses Emacs' 21 native highlighting mechanism, and is enabled
by default if available.
Fix extra spaces in IMAP4 APPEND command.