Make patch saving in vim a little better.

It seems like there was some bitrot on the previous version of this
which made it not work correctly.  This fixes the bitrot and also
updates how it works.

- Sometimes [PATCH.*] isn't at the beginning of the message (often on
lists I'm on).
- It now goes through all the messages in the thread.  for some reason
the toplevel messages didn't usually contain all the patches in my
testing.
- Check for 'Re:' at the beginning and skip if it's there.
- Save patches to filesystem-safe filename containing the subject
(unfortunately we use system()...)

Ian
VIM: Automatically refresh folder screen

This patch makes the folder screen refresh each time you 'enter' it.
This way when you read a folder and mark items as read the changes are
reflected immediately when you return to the folder view.

Ian
VIM: Make starting in 'insert' mode for compose optional

This adds a variable to make starting in insert mode optional when
composing and replying to emails.  I found it unusual to be started in
insert mode so I thought I'd make it optional as others may find this as
well.

Ian
VIM: Add a 'tag all' folder option.

This adds the ability to mark an entire folder as read (or any other
tags you like once you map it).

Ian
VIM: Add better attachment support

This patch changes how the notmuch vim client supports attachments:

- For each attachment an 'Attachment <number>: <filename>' is added
to the header
- You can then use 'e' to extract the attachment under the cursor
or use it elsewhere to extract all attachments (the prior behavior)
- You can use 'v' to 'view' the attachment using xdg-open by default.

Ian
VIM: Add URI handling

This patch adds URI handling to the vim client.  You can now press
'u' by default and the client will parse the current line and find
any URIs available.  If there are more than one it opens the one
under the cursor or else it opens the only one available.  It also
supports mailto: URI's and will compose a new message when activated.

By default xdg-open is used for everything but mailto: which generally
does the right thing afaict.

Ian
VIM: Use notmuch CLI for config

This patch switches from reading .notmuch-config directly to using
the CLI the same way that emacs does it.  It actually uses less code
and is probably less error prone.

Ian
VIM: Better reply handling with multiple emails

This patch fixes reply handling when using multiple emails.  This adds a
config check for other_email and uses that information when formulating
reply headers.  It will strip out your own email addresses from the
reply and set the From: to be an email of yours found in the original
message.

Note that this is built on top of the config change patch.

Ian
VIM: Improve moving between messages in a thread

Add a few changes to moving between threads:

- It supports 'scrolloff' so that if you have this set it will move the
buffer and cursor so the next/prev email starts at the top of the
screen.
- It adds the ability to use shift-tab to go to the previous msg in
the thread.

Ian
VIM: Make an option to save sent mail locally

Add an option to use 'notmuch insert' to save your sent mail.
VIM: Improve search list

Make the width of the search name column expand/contract with the
length of the longest search name string.

Fix syntax highlighting to make the above work right.

Add the ability to use a blank search pattern to create a spacer
to break up searches into groups.