In bisect{,-runner}.pl, refactor the code for CPU probing and make jobs.

Move the code that attempts various ways to probe for the number of CPUs
from bisect-runner.pl to bisect.pl. Skip the probe entirely if a -j (--jobs)
options is passed to bisect.pl. For --jobs=0 (or -j0) entirely skip adding
-j to the make command line. (For heretical versions of make which don't use
-j for parallelism).

Previously the probe code always ran for each call to bisect-runner.pl,
which is completely redundant if bisect-runner.pl is being called for
argument validation or help text, and inefficient even when building, as the
number of CPUs rarely changes during a bisect run. Additionally there was no
way to avoid a -j in the make command line, which isn't going to fly on
systems where the make utility doesn't have a -j option.
On HP-UX, bisect without any -j option as the system make is "special".

HP-UX system make offers parallelism with -P not -j. (But doesn't deliver on
it, so we're not going to attempt to work round its crankiness and failings.)
bisect-runner.pl needs to know how to identify HP-UX's patch.

Unlike AIX, HP-UX patch offers no meaningful clue as to its upstream version:

$ patch -v
$Header: patch.c,v 76.1.1.2.1.3 2001/12/03 12:24:52 abhinav Exp $
Patch level: 0

But it ignores unified diffs, so assume the worst and feed it context diffs.
Teach bisect-runner.pl that on HP-UX, _filbuf() is named __filbuf().

This is all that is needed to build 5.003 and earlier. bisect.pl can validate
all stable versions from blead back to 5.002
bisect-runner.pl should use ".$Config{dlext}" instead of hard-coding ".so".
bisect-runner.pl should search for lib*.a as well as lib*.so

When forcing the library list on earlier perls to avoid versioned shared
objects, also look for static libraries. Also, ensure bisect-runner.pl
searches additional library paths given to it via -Alibpth

Without this, one can't test build against static libraries in non-standard
locations.
When testing the end version, bisect.pl should treat a 'skip' as fatal.

git bisect uses exit code 125 to signal a skip. Previously bisect.pl would
treat 125 just like every other non-zero exit code, assume that it meant
'fail', and if 'fail' was expected for the end version then it would start
the bisect run as normal. Which isn't useful, as it means that there's a
problem with the user's test case.
In bisect-runner.pl, refactor the system ... and die; into system_or_die().
bisect-runner.pl should always exit fatally with 255, to abort the bisect.

Don't use die or croak, as these will exit with the value of $! or $? instead
of 255, and git bisect doesn't treat these as fatal errors, but ploughs on
before inevitably failing messily for some other reason, concealing the true
error message.
Add --all-fixups to bisect.pl, to apply all patches and fixups.

bisect-runner.pl will minimally patch various files on a platform and
version dependent basis to get the build to complete. Normally it defers
doing this as long as possible - .SH files aren't patched until after
Configure is run, and C and XS code isn't patched until after miniperl is
built. If --all-fixups is specified, all the fixups are done before running
Configure.
Add --early-fixup and --late-fixup to bisect.pl, for user-controlled patching.

These provide a way to run code or to conditionally or unconditionally
apply patches for each revision tested during git bisect. This is very
useful when for the commit range, operating system and configuration options
tested, the behaviour otherwise would be to fail to build for a wide range
of revisions, and hence the bisect would finish without finding culprit
commit due to getting bogged down in 'skipped' revisions.