New function for restoring window layout

* lisp/gnorb-utils.el (gnorb-restore-layout): Interactive function for
  restoring window layout.

* lisp/gnorb-gnus.el (gnorb-gnus-incoming-do-todo): Delete other
  windows, so we're left with a clear frame. `gnorb-restore-layout' can
  bring us back.

* README.org: Document.
Basic skeleton of registry usage

* lisp/gnorb-registry.el: New file
Rename/move the registry-entry function

* lisp/gnorb-registry.el (gnorb-registry-make-entry): New name and
  location of function.
* lisp/gnorb-gnus.el (gnorb-gnus-make-registry-entry): Delete old
  function
  (gnorb-gnus-incoming-do-todo): Use new function
  (gnorb-gnus-outgoing-make-todo-1): Use new function
* lisp/gnorb-gnus.el (gnorb-trigger-todo-action): Use new function
Provide initialization of gnorb email tracking

Registry based email tracking now must be explicitly started by calling
`gnorb-tracking-initialize'. That sets the `gnorb-tracking-enabled'
variable to t, and hooks into various actions.

* lisp/gnorb-utils.el (gnorb-tracking-enabled): New internal variable.
  (gnorb-tracking-initialize): New function
* lisp/gnorb-registry.el (gnorb-registry-make-entry): Check
  `gnorb-tracking-enabled' instead of `gnus-registry-enabled'
  (gnorb-registry-capture): New function, replacement for
  `gnorb-gnus-capture-registry'.
* lisp/gnorb-gnus.el (gnorb-gnus-capture-registry): Delete function.
  Remove addition of 'gnorb-ids to
  `gnus-registry-extra-entries-precious', do this in the initialize
  function instead.
Don't check for relevant headings if not tracking

* lisp/gnorb-gnus.el (gnorb-gnus-incoming-do-todo): Check
  gnorb-tracking-enabled before looking for relevant headings
Begin shifting candidate finding to the registry

* lisp/gnorb-org.el (gnorb-org-find-visit-candidates): Remove function
* lisp/gnorb-registry.el (gnorb-find-visit-candidates): New function name
* lisp/gnorb-gnus.el: Change all calls to new function
Continue shifting candidate finding to the registry

* lisp/gnorb-org.el (gnorb-org-add-id-hash-entry): Move function to
  gnorb-registry.el
  (gnorb-org-populate-id-hash): Move function to gnorb-registry.el

* lisp/gnorb-utils.el (gnorb-msg-id-to-heading-table): Move defvar to
  gnorb-registry.el

* lisp/gnorb-registry.el: Accept all the above
Make gnorb-registry-make-entry more careful

* lisp/gnorb-registry.el (gnorb-registry-make-entry): If the entry
  already exists, don't overwrite existing key values with nil values
  passed to this function.
Fix gnorb-tracking-initialize

* lisp/gnorb-utils.el (gnorb-tracking-initialize): Needs to be put into
  the gnus-started-hook in order to work properly.
Stop creating hash table entries and GNORB_MSG_IDS

Preparatory to removing the hash table altogether, we stop creating hash
table entries, or saving the message ids of outgoing messages in Org
heading properties.

* lisp/gnorb-utils.el (gnorb-trigger-todo-action): Only create registry
  entries, not hash table entries.

* lisp/gnorb-org.el (gnorb-org-msg-id-key): Note this fact in the
  docstring of this (soon to be removed) customization option.
Improve lookups for entries with unknown groups

* lisp/gnorb-gnus.el (gnorb-gnus-sent-groups): New user option. Set to a
  list of groups where sent messages are stored; we look for registered
  messages with no group key in these groups.

* lisp/gnorb-utils.el (gnorb-msg-id-to-group): Use the new option for
  locating mystery messages. General improvements to lookup logic.
Look up tracked messages via the registry

* lisp/gnorb-registry.el (gnorb-registry-org-id-search): Wrapper for
  `registry-lookup-secondary-value`: We feed it an org id, and it gives
  us relevant message ids.

* lisp/nngnorb.el (nnir-run-gnorb): Use this ability when creating nnir
  summary buffers from org searches. For now we're both scanning the
  registry, and searching for links and GNORB_MSG_ID props. We'll
  probably always search for links, but the props search will get
  dropped eventually.
Improvements to gnorb-registry-make-entry

* lisp/gnorb-registry.el (gnorb-registry-make-entry): Don't stomp on
  existing key values; always return entry.
The big switch! Rely only on registry for tracking

* lisp/gnorb-registry.el (gnorb-msg-id-to-heading-table): Deleted
  variable.
  (gnorb-find-visit-candidates): Find candidates via the registry,
  not the hash table.
  (gnorb-org-add-id-hash-entry): Deleted function.
  (gnorb-org-populate-id-hash): Deleted function.

* lisp/gnorb-utils.el (gnorb-pretty-outline): Because tracking now only
  stores Org ids, not Org ids plus outline path, we need a separate
  function for creating a pretty outline path from an id.

* lisp/gnorb-gnus.el: Lists of relevant headings are now simple lists of
  ids, not lists of lists, so use car rather than caar to get the first.
  Also, use `gnorb-pretty-outline' where appropriate.

* README.org: Document
Helper function for transitioning to the new system

* lisp/gnorb-registry.el (gnorb-registry-transition-from-props):
  Single-use function for going through all org files and transitioning
  from GNORB_MSG_ID-based tracking to the registry. See docstring.
Refactor splitting of message reference headers

* lisp/gnorb-registry.el (gnorb-find-visit-candidates): Split reference
  headers strings here.

* lisp/gnorb-gnus.el: Instead of everywhere else.
Rename gnorb-gnus-sending-message-info

To plain old gnorb-gnus-message-info, we're going to be using it for
both incoming and outgoing messages.

* lisp/gnorb-gnus.el: global rename

* lisp/gnorb-org.el: global rename

* lisp/gnorb-utils.el: global rename
Use gnorb-gnus-message-info for incoming and outgoing

* lisp/gnorb-gnus.el (gnorb-gnus-incoming-do-todo): This function should
  not be creating registry entries. It should just load
  gnorb-gnus-message-info, same as outgoing does, and leave the rest to
  gnorb-trigger-todo-action.

* lisp/gnorb-utils.el (gnorb-trigger-todo-action): Now responsible for
  creating registry entries both for incoming and outgoing. It no longer
  needs to "know" which is which.
First draft of trigger action reworking

* lisp/gnorb-org.el (gnorb-org-trigger-actions): New option listing
  possible actions when triggering Org headings from relevant messages.

* lisp/gnorb-utils.el (gnorb-trigger-todo-default): Obsoleted option
  (gnorb-trigger-todo-action): Allow the user to choose an action from
  gnorb-org-trigger-action. Capture to child and capture to sibling do
  not work yet. Function signature no longer accepts a prefix arg passed
  from other callers.

* lisp/gnorb-gnus.el: Don't pass prefix arg to
  `gnorb-trigger-todo-action', it no longer accepts it.
Dispense with the "insert a link" message

* lisp/gnorb-gnus.el (gnorb-gnus-incoming-do-todo): The proliferation of
  possible trigger actions means this message doesn't always make sense
  anymore.