emacs: derive correct timestamp in FCC unique name

Previously, the timestamp at the beginning of the FCC unique maildir
name was derived incorrectly, thanks to an integer overflow. This
changes the derivation of timestamp to use a float, and so will get
the number correct at least until 2038. (It is still formatted with
"%d" so it will show up as an integer.) Should we need to change it in
the next 26 years to take the unix millenium into account, it will be
invisible to users.

This change is mostly a question of consistency, since the unique name
is arbitrary anyway. But since most people use timestamps, and that was
the original intention here as well, we might as well.

Signed-off-by: Jesse Rosenthal <jrosenthal@jhu.edu>
emacs: add pipe attachment command

Allow the user to pipe the attachment somewhere. Bound to '|' on the
attachment button.

Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
ruby: extern linkage portability improvement

Some C compilers are stricter when it comes to (tentative) definition
of a variable -- in those compilers introducing variable without 'extern'
keyword always allocates new 'storage' to the variable and linking all
these modules fails due to duplicate symbols.

This is reimplementation of Charlie Allom's patch:
id:"1336481467-66356-1-git-send-email-charlie@mediasp.com",
written originally by Ali Polatel. This version has
more accurate commit message.
cli: command line parsing: allow default for keyword options

This changes the parsing for "keyword" options so that if the option
is specified with no argument the argument is parsed as if it were
passed an empty string. This make it easier to add options to existing
boolean arguments (the existing --option can default to TRUE).
cli: Let json output "null" messages for non --entire-thread

All formats except Json can output empty messages for non
entire-thread, but in Json format we output "null" to keep the other
elements (e.g. the replies to the omitted message) in the correct
place.
cli: make --entire-thread=false work for format=json.

The --entire-thread option in notmuch-show.c defaults to true when
format=json. Previously there was no way to turn this off. This patch
makes it respect --entire-thread=false.

To do this the patch moves the --entire-thread option to be a keyword
option using the new command line parsing to allow the existing
--entire-thread to keep working.
Update devel/schemata for --entire-thread=false

Also remove the Json --entire-thread item from devel/TODO.
emacs: make elide messages use notmuch-show for omitting messages.

Previously the elide messages code got the entire-thread from
notmuch-show.c and then threw away all non-matching messages. This
version calls notmuch-show.c without the --entire-thread flag so
it never receives the non-matching messages in the first place.

This makes it substantially faster.
cli: notmuch-show.c fix whitespace error

Fix an existing whitespace error since it is right next to
the changes of this series.
emacs: Add configurable wrapping width for notmuch-wash-wrap-long-lines

This introduces a variable to control after how many characters a line
is wrapped by notmuch-wash-wrap-long-lines (still wrapping at the
window width if it is lower).
Minor correction to devel/schemata

In id:"87sjdm12d1.fsf@awakening.csail.mit.edu" Austin pointed out that
devel/schemata needs a slight correction with the new
--entire-thread=false option. This is that correction.
notmuch-mutt: fix helper invocation for the tag action

As it was before, "-inbox" was interpreted as a getopt option, rather
than as a tag manipulation request. Making the action unusable.

Closes: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=678012
debian: document tag action invocation fix in changelog
test: add basic show, search --format=text tests

There didn't seem to be these basic tests for --format=text,
as there are for --format=json.  These are just the tests from
the `json' script, with adjusted expected outputs.
manpages: consistent "format" for NAME section

The NAME section in manpages generally doesn't start with capital
letter (unless the word is 'proper noun') and doesn't end with
period. Notmuch manual pages now matches that "format".
Add missing "tags" field to search schema

This field is output by search, but it didn't make it into the
documentation.
contrib/nmbug: make nmbug a subdirectory

I want to ship the status tool here as well, along with a sample
config file.
contrib/nmbug: add nmbug-status script

This is (almost) the same script as has been used for
http://nmbug.tethera.net/status for a while now. The only change is
that the configuration is not hardcoded anymore. By default the config
is fetched from a special branch in the nmbug repo that contains only
config info. The idea is that push access to this branch can be
restricted a bit more than the tags, since it will change the
appearence of the web pages.
contrib/nmbug/ nmbug-status: restored out['subject']... block level

In reformatting the line 111 accidentally indented to one indentation
level too much (happens easily when interactively indenting python
code using emacs). The line now has 4 spacess less indentation, thus
restoring it to the block level it belongs.
contib/nmbug/nmbug-status: leftover whitespaces, indentation & quoting

The initial nmbug-status was pretty consistent in it's whitespacing
but a few lines had some leftover slips. Those are now "corrected".

Also, most of the code used ' as quoting char. As in Python one can
use ' and " interchangeably some code used " instead of '. However
the usage of those were inconsistent. Now all quotes that python
parses are ':s (only quoted content uses ":s).

No functional changes.