Document how to set up a system to run Cassandane

How to run Cassandane unprivileged on a development system rather than
as root on a VM.
Minor documentation tweaks.
Make Mail::IMAPTalk shut up already about unicode.
Updated README.deps for Encode::IMAPUTF7
Save the message number as an attribute 'id'

This is the number at the start of the FETCH untagged response, which
will be the message number.
Add Message::set_attributes

to allow setting a list of name/value pairs.  This makes some of the
test code slightly neater.
Make random_words repeat more sensibly

- All the words extracted from the dict file are
  emitted before any are repeated
- Adjust the parameters for extracting words so that
  2048 words are extracted rather than 100.
- Provide slightly longer words (up to 7 chars)
- Use "use constant".
Add tests for STORE FLAGS.
Document some useful kernel tunables.

So that we get cores.  Cores are good, mmmm.
Run all utilities via _fork_utility()

An ancestor of this commit originally changed the code which ran
ctl_mboxlist and reconstruct to go through _fork_utility() so that the
environement and other tweaks applied to child processes in that
function are always applied.  That code is gone since commit "instance:
create a special "adminimap" instance that's used for creating users",
but some code cleanups of _fork_utility() are still useful.

In particular, die with a useful message when a process started by
_fork_utility() exits with a non-zero exit code, or is terminated by a
signal.  This ensures the test fails and there's enough information in
the failure message to track down why.
Test STORE FLAGS with UNCHANGEDSINCE
Disconnect during replication

The test runs "sync_client -u" to do a replication run.  The defined and
correct behaviour of that code is to exit early with an exit code of 1
if any of the user's folders cannot be synced because they are locked.
Unfortunately the test has open an IMAP session to each of the master
and the replica, so the chances of the mailbox being locked are high.
Work around this by disconnected and reconnecting around the replication
run.

Also, don't assert on the return value of run_utility, as run_utility
does that checking now and more usefully.
Don't check the return value of Instance::start

as it doesn't mean anything.  Failures all come from dies.
Test per-message annotations

 - FETCH ANNOTATION and STORE ANNOTATION
 - interaction with MODSEQ
 - STORE (UNCHANGEDSINCE) ANNOTATION
Fall back gracefully without XML test runner

to just supporting TAP, rather than failing at compile time.
Fix SequenceGenerator

it was doing evil and wrong things to DateTime.
Emit syslog messages before and after each test

Needed to add a derived class of Test::Unit::Runner to do it though.
Sightly better asserts for metadata tests

using Mail::IMAPTalk->get_last_completion_response
Clean up any running master on test failure

Test failures can throw a die which bypasses calling Instance->stop()
which leaves a running master process.  Add a DESTROY method to Instance
which ungracefully kills any running master pid.
Allow specifying arguments to a service

using the ->new(args => [...]) syntax.  Also allow the binary to be an
absolute path to a binary rather than a relative path to cyrus bindir.