The basic fork test runs, but they're totally out of sync.

Added TB2::SyncStore and the coordiante_forks option.

While the sync directories are the same, it looks like each process is
using its own file.  Possibly an overly lazy default.  Probably best
if the mapping of an object ID to a filename was deterministic, possibly
using a hash algorithm.

Checking this in because there's a lot of implementation here and
it's getting scary keeping this in my stash.
Fix plan() to accept multiple arguments.

use Test::More coordinate_forks => 1, tests => 43 was ignoring the "tests => 43" part.
Get forked tests working.

Made the process of determining where SyncStore will put the file deterministic.
So now each process will look in the same place for the file.
Subtests work, so make a test for a passing subtest and a failing one.
Fix t/fork/events.t to properly wait for its children.

Otherwise the parent goes and ends the test and checks the test state
before they're done.
Check the forked tests were successful, just in case.
Expose Test::Builder->coordinate_forks as a convenience method.
Fix up the fork tests which don't check for fork capability.
Test that a subtest entirely inside a fork works.

This requires that the subtest locks the parent state for its entire
operation.  Otherwise the subtest and parent output would interleave
and make no sense.
Fix a syntax error in t/fork/events.t
Fix a syntax error in t/fork/subtest_pass.t

has_fork comes from t/test.pl.  Have to load it in its own package to
avoid interfering with Test::More's exported functions.
Rewrite the test checking a failing subtest using events.
Fix t/SyncStore/SyncStore.t

Forgot the plan.

Child and parent test numbers need to be coordinated else they both say "ok 6"

Must ensure that I/O buffering doesn't make the parent not output before the child.