Flags: test that search works for all 128 flags
Rename: SELECT no longer keeps paths around
Force uid=0 mode for Mail::IMAPTalk

as different versions of the library have different defaults,
and we rely on one particular behaviour.
make_random_address() is now public and has params

which will soon be useful when generating messages with carefully
controlled from: cc: and bcc:
Allow setting Cc: and Bcc: in Generator
Idle: add a test for shutting down Cyrus with IDLE

reproducing a situation seen in production where shutting down Cyrus
would racily result in imapds blocked in idle_wait() and not responding
to SIGTERM.
Add support for daemons not managed by master

- Split off large parts of class Service into a new class Daemon

- Instance manages a list of daemons, starts them up and waits
  for them to be listening on their configured port

- Any daemon which drops a pid file in $basedir/run/ gets shut
  down automatically by Instance

- Reimplemented the Annotator tests using the new API instead
  of the hacky old Instance::stop_command_pidfile().
stop_command works even if command needs reaping

Because otherwise it would loop forever failing to kill an apparently
unkillable process which was in fact just a Zombie and needed to be
reaped before we tried sending another signal.
run_replication now takes many options

and uses them to control the sync_client command line.

server => $hostname	# -S option, default is the replica
server => undef		# no -S option at all
channel => $channel	# -n option
inputfile => $filename	# -f option
user => $user		# -u option
mailbox => $mailbox	# -m option
rolling => 1		# -R option
meta => 1		# -s option
Generator allows overriding MIME parameters

so we can generate 8bit text and see what damage it does.
Create a default boundary for multipart messages

when generating new messages.
Update default parameters for genmail script et al

to point to the default running instance by default.  Was pointing at a
VM instance which I haven't run for over a year.
Add --latest argument to start-instance.pl
Replace config_TEST methods with magic attributes

and generalise the three magic words "replication" "sphinx"
and "squat" which are looked for in test names.  Use Perl method
attributes and correlates them to pre-registered magic name handlers
which can either set an imapd.conf variable or set the 'want' feature
mask for Cyrus instances.
Whitespace fix
Unified xlog() and process stderr/stdout

Each test captures stdout & stderr in a temporary log file, and adds it
to the test's annotation strings so that it's printed should the test
fail.  xlog() already emits to stderr as well as syslog.  Several of the
more interesting Cyrus processes will (sometimes) initialise syslog with
LOG_PERROR which emits to stderr.  The result is that almost all the
interesting errors are captured together, and emitted only on error,
even if -v is specified.  Hopefully this will make it easier to diagnose
failing tests.
Use SIGTERM for graceful shutdown not SIGQUIT

Cyrus switched over to SIGTERM some time ago, although the 2.4 codebase
still expects SIGQUIT.  But, sending a SIGQUIT to Sphinx is really quite
amazingly bad, and will trigger a core dumping loop which fills up your
disk in no time flat.  Until we can fix this, just send SIGTERM.
Add --log-directory option to testrunner

Which causes logs to be saved in a per-test file in the given directory,
and not deleted when the test concludes.
Introduce class Mboxname

which handles mailbox names.  This is a surprisingly useful class.
Add Cassandane::Daemon::parse_address()

which, oddly enough, parses an address.