lib: Invalidate message metadata in _notmuch_message_gen_terms

Previously, we invalidated stored message metadata in
_notmuch_message_add_term and _notmuch_message_remove_term, but not in
_notmuch_message_gen_terms.  This doesn't currently result in any bugs
because of our limited uses of _notmuch_message_gen_terms, but it may
could cause trouble in the future.
lib: Fix slight misinformation in the database schema doc

The database schema documentation made it sound like each mail
document had exactly one on-disk message file, which hasn't been true
for a long time.
travis: Only notify IRC on success if the previous build failed

Without this, Travis is rather spammy.  Travis will continue to notify
the IRC channel on each build failure, which seems desirable.
emacs: Introduce notmuch-jump: shortcut keys to saved searches

This introduces notmuch-jump, which is like a user-friendly,
user-configurable global prefix map for saved searches.  This provides
a non-modal and much faster way to access saved searches than
notmuch-hello.

A user configures shortcut keys in notmuch-saved-searches, which are
immediately accessible from anywhere in Notmuch under the "j" key (for
"jump").  When the user hits "j", the minibuffer immediately shows a
helpful table of bindings reminiscent of a completions buffer.

This code is a combination of work from myself (originally,
"notmuch-go"), David Edmondson, and modifications from Mark Walters.
emacs: Expand default saved searches and add shortcut keys

This should help new users off to a better start with the addition of
more sensible saved searches and default shortcut keys.  Most existing
users have probably customized this variable and won't be affected.
lib: Improve documentation of _notmuch_message_create_for_message_id

Clarify the state of the returned message when
_notmuch_message_create_for_message_id returns
NOTMUCH_PRIVATE_STATUS_NO_DOCUMENT_FOUND.
new: Report and abort on upgrade failure

Previously the return status of notmuch_database_upgrade went
completely unchecked.
test: Include generated dependencies for test sources

Previously the build system was generating automatic header
dependencies for test sources, but only smtp-dummy was in SRCS, so
only its dependencies were being included.  Add all of the test
sources to SRCS so that the root Makefile.local includes their
dependencies.
util: Const version of strtok_len

Because of limitations in the C type system, we can't a strtok_len
that can work on both const string and non-const strings.  The C
library solves this by taking a const char* and returning a char*
in functions like this (e.g., strchr), but that's not const-safe.
Solve it by introducing strtok_len_c, a version of strtok_len for
const strings.
notmuch-config: talloc_strdup MAILDIR and NAME environment variables

When defined -- the pointer is soon given to talloc_free() which
expects it to be allocated by talloc.
debian: build with emacs24 by default, disable gdb on arm64

From wookey@debian.org

     id:20140808012130.GT7605@stoneboat.aleph1.co.uk

Fixes for the port in progress of debian to arm64.
debian: re-enable atomicity tests on armhf

Commit a33ec9c seems to have fixed the problem on the armhf
porterbox (harris.debian.org).
Merge tag 'debian/0.18.1-2'

uploaded to Debian unstable
emacs: Improved compatibility for window-body-width in Emacs < 24

Fix byte compiler warning "Warning: the function `window-body-width'
is not known to be defined." by moving our compatibility wrapper
before its use and simplify the definition to a defalias for the old
name of the function.
Add test for incorrect threading of messages

This happens when there is some garbage after the last Message-ID in
the References header. See for example
https://lkml.org/lkml/headers/2014/5/19/864.
Make parsing of References and In-Reply-To header less error prone

According to RFC2822 References and In-Reply-To headers are supposed
to contain one or more Message-IDs, however older RFC822 allowed
almost any content. When both References and In-Reply-To headers ends
with something else that a Message-ID (see e.g. [1]), the thread
structure presented by notmuch is incorrect. The reason is that
notmuch treats this case as if the email contained no "replyto"
information (see _notmuch_database_link_message_to_parents).

This patch changes the parse_references() function to return the last
valid Message-ID encountered rather than NULL resulting from the last
hunk of text not being the Message-ID.

[1] https://lkml.org/lkml/headers/2014/5/19/864