significant changes
-----------------------
cache.c
	- index caching fixed
	- support for mailboxes that lie about message sizes
	- duplicate message rejection
	- fid speedup hack
	- squeeze out all nuls and \rs from raw messages
	- hook for mailbox-specific decache hook.

dat.h
	- careful tracking of why messages are to be removed
	- workaround for truncated mime messages
	- mailbox-specific index bits
	- semaphores preventing concurrent index access or sync
	- avl tree for message tracking by sha1sum.

fs.c
	- rclunk races reduced.
	- support for reading top ctl and mbox/ctl file.
	- fix mailbox reference bugs in walk, clone
	- fix incorrect caching of rawunix file
	- fix incorrect formating of unixdate
	- support for fid hack
	- fix generation of info file for small partial reads.
	- increase the size of the fid cache
	- sync mboxes on exit 20090901

idx.c
	- support for reading cached index only with
	mailbox vouching for an up-to-date index.
		- identify and drop messages not seen in new cache.
		- write extra line of mailbox-specific info
	- deal with corrupted index entries
	- use avl tree to search for messages matching index entries
	- track bad characters and mailbox-specific entries in index
	- semaphore protects index writing.
	- fixes to index locking
	- hold reference to message when writing index.

imap.c
	- fix parsing of imap capabilities
	- gmail kludges
	- support for imap lists
	- more careful ssl handling
	- fix thumbprint rereading.
	- todo: keep uid in avl tree
	- todo: removing messages.

mbox.c
	- fix message references in plumb
	  (don't try to cache deleted messages)
	- work around broken quoted-printable.
	- clean up more agressively after mailbox
	- ignore sequential mime boundaries (nil message)
	- catch truncated mime parts, work around.
	- use mailbox-specific sync.
	- don't attempt to delete messages not deleted
	by fs interface.  ignore messages that were bad,
	duplicate or went missing to avoid race conditions.

mdir.c
	- save qid information to index to avoid useless
	directory rescanning
	- don't try to delete new messages that can't be read
	- todo: keep file names in avl tree.  avoid sorting directory.

plan9.c
	- use bio to read mailbox; eliminate buffer break bugs.

pop.c
	- dont RETR deleted messages

strtotm.c
	- remove private cistrncmp

imap4d
---------

copy.c
	- don't append a newline to messages
	- write the uid when message is saved

imap4d.c
	- deal with message sets that are specified hi:low
	- avoid crash on bad dates
	- support for uid+, quota
	- support for logindisabled
	- use unsigned uids
	- hacks to speed up apple mail searches

imp.c
	- new file.  use avl tree to work around
	conflicting sorting requirements.  folder
	must be stored (or at least returned) in uid order.
	mdirs are sorted by date, which is often different

mbox.c
	- use avl tree to match messages returned from
	upas/fs to internal structures

search.c
	- avoid reading message info if possible
	- avoid reading message if possible
	- special messageid search for apple mail.  apple mail
	searches for every email appended to a folder by message id

utils.c
	- file locking fix
	- rewrite imp parsing to use an avl tree to
	work around ordering problems.

nodes.c
	- work around message ordering problems.

nedmail
----------
	- k and K commands added (persistant mark/unmark mail)
	- k matching verb; as in gkh prints headers of marked mail
	- properly set the "seen" flag.
	- fix various command parsing problems
	- allow ranges to be specified and then procssed in reverse.
	- guard against unexpected message reordering
	- deal with dead fileserver
	- always use file(1) to check content type of application/octet-stream.
	many mailers send text out like this
	- nontraditional: use '*' to mark unseen messages
	- todo: use avl tree to avoid sorting directory.