Expand the test names earlier in TestPlan

the first step in a cunning plan to run tests in parallel.
First cut at parallel test running

 - hardcoded to 2 worker children
 - listeners not proxied, so results go astray
Proxy exceptions out from Workers

so they're reported properly, i.e. once in the main process.
Add --jobs argument to testrunner.pl
Handle broken pipe when shutting down Workers

this was happening racily and causing the main process to die on SIGPIPE
before the test failure summary could be printed.
Combine WorkerPool::drain & receive

with a new flag indicating whether to block waiting for a Worker to
become idle.
Remove the output format listener in Workers

so that the '.' progress indicator is emitted only once, in the parent
process.
Don't try to freeze TestCases

the have references to up to Instances which are huge objects and
contain all sorts of stuff we can't, and don't want to, freeze/thaw.
Fortunately we have enough information in the parent process to just
pass the name back up the pipe.
Workers use different port ranges & basedirs

to avoid spurious test failures due to directories or ports unexpectedly
already existing.
Keep recording results after 1st parallel failure

due to the Perl &&= operator not evaluating the RHS if the LHS is
already false, thus incorrectly skipping the call to _finish_workitem()
after the first failure or error is reported.  Use bitwise &= instead,
but make sure we don't have undef on the RHS.

"You keep using that operator.  I do not think it means what you think
it means."
Allocate ports properly

 - Allocation delayed until the Instance is started, not when
   the Service is created - which means it happens in the Worker
   process not the main process when running with -j.

 - Track which ports are allocated to extant Services and avoid
   double-allocating them.
Fix --stop after merge of --jobs

The peril of working on the same code in two different branches!

Reimplement --stop properly, without an awful Perl symbol table hack.

Also, fixed the problem where the testrunner exit code was wrong, due
to a misunderstanding of what Test:Unit::TestSuite::run returns.
[IRIS-1273] Suppress libc memleak in getgrgid()
Allow running an alternate valgrind binary

which is useful for trying out the next version of Valgrind.
Push more initialisation into Instance::start

and out of the Instance constructor, because start() is run in the
Worker process in parallel mode but the constructor is run in parent
process.  This was interfering with the generation of instance basedirs
for those few tests (like Bug3072) which still create Instances in their
constructors.

This means that $instance->{basedir} isn't defined until after start()
or stop(), which turns out to be a little bit tricky.

Also, delay the pwcheck setup until start().  This means that there are
no Instance methods called in the constructor anymore and the very last
thing it does is 'return bless'.

Also, fix a race condition in the creation of basedirs, which shouldn't
matter unless two Cassandanes are run at once, but at least it's done
properly now.
Rewrite Test::Unit::Runner::XML

because it cannot handle tests being run out of serial lexical order
without losing track of test results or getting times wrong.

Also, add some missing jUnit elements and attributes so that the
the result validates with the JUnit.xsd schema.
Added PortManager class

which has the port management code from Cassandane::Service pulled out.

Also, add an assert_all_free() function which checks that all the ports
have been explicitly freed, and whines to STDERR if this is not the
case.  This will help find tests which leak ports.
Stop leaking ports in some tests.

Now we don't run out of ports anymore.
Update docs re Test::Unit::Runner::XML

to indicate we have our own internal copy now.
Use Storable instead of FreezeThaw

- it's more modern and maintained
- it ships in the base 'perl' package on Ubuntu & CentOS
- the interface is almost identical

Thanks RobM!