Shadow message forwarding in nngnorb summary buffers

* lisp/nngnorb.el (gnorb-summary-mail-forward): New function shadowing
  gnus-summary-mail-forward, remap keys to point to our function.
Delete duplicate org-ids for outgoing messages

* lisp/gnorb-gnus.el (gnorb-gnus-outgoing-do-todo): When we look at the
  References: header and collect Org IDs that this message might be
  relevant to, we're going to get a lot of duplicates for long
  conversations, so delete-dups on the ids before we insert the headers.
Do a better job of dealing with reference headers

In all cases, examine both References and In-Reply-To, and also use
existing Gnus utilities for handling the values.

* lisp/gnorb-gnus.el (gnorb-gnus-check-outgoing-headers,
  gnorb-gnus-outgoing-do-todo): Check In-Reply-To header in addition to
  References. If possible, split the value with gnus-extract-references.

* lisp/gnorb-registry.el (gnorb-find-visit-candidates): Check here for
  string values, and use gnus-extract-references if necessary.
Only use the summary reply hook once.

Most of the functions shadowing Gnus' reply functions simply call into
gnorb-summary-reply. Don't call gnorb-summary-reply-hook if it's going
to get called again later! Pure brain-o.

* lisp/nngnorb.el (gnorb-summary-wide-reply,
  gnorb-summary-reply-with-original, gnorb-summary-very-wide-reply,
  gnorb-summary-wide-reply-with-original,
  gnorb-summary-very-wide-reply-with-original): None of these need to
  call the hook.
Allowing fetching attachments from specific IDs

* lisp/gnorb-org.el (gnorb-org-attachment-list): Allow passing an Org ID
  to the function to get the attachment list from the specified ID,
  rather than the heading under point.
Don't append the message-exit-action

* lisp/gnorb-gnus.el (gnorb-gnus-outgoing-do-todo): Somehow I feel safer
  with gnorb-org-restore-after-send as the last item of the exit
  actions.