print times() in TestInit END, read them in t/TEST

Currently, t/TEST calls times() before and after each testfile, and
computes elapsed times, child user and system times.  This has several
drawbacks:

- the self user/system times are for t/TEST and are uninteresting

- the child times are aggregated for all children which may be forked
  by the testfile, and we lose possibly interesting info wrt split of
  cpu usage between the testfile and its children.

- parallel testing (ala HARNESS_OPTIONS=j4 make test_harness) will
  corrupt data (the real problem).  The child user/system numbers
  taken by t/TEST will be for whatever harness is running
  concurrently.

Fix this by calling times() in TestInit.pm, from END block.
Print the values as a diagnostic output line (# ET: ...), and collect
them in t/TEST.   This also has some (minor) drawbacks:

- Tests in t/{base,comp,run} dont use TestInit, and thus dont emit
  this timing info.  We can forgo these; we get # ET numbers on the
  rest, and still have the timings done by t/TEST itself for all test
  files.

- TestInit: END{} block must untie a tied STDOUT to avoid failures,
  which foregos this output from a small number of tests.  The END{}
  will execute in all perl children (see below) which provides more
  data, but can be confusing, and the order which they happen depends
  upon the test specifics.

To minimize disruption of existing harnesses/parsing, printing of
additional timing data depends on HARNESS_TIMER value.

HARNESS_TIMER=1 make test;
t/io/nargv ................ ok       18 ms

HARNESS_TIMER=2 make test;
t/comp/colon .............. ok       17 ms    10 ms     0 ms
t/comp/decl ............... ok        4 ms     0 ms     0 ms
t/comp/final_line_num ..... ok        5 ms     0 ms    10 ms
t/comp/fold ............... ok       10 ms    10 ms     0 ms
t/comp/form_scope ......... ok        8 ms     0 ms    10 ms

HARNESS_TIMER=3 make test;
HARNESS_TIMER=../../perf make test; # (existing directory)
t/cmd/elsif ............... ok        9 ms     0 ms     0 ms	# ET: (ms) u:0 s:0 cu:0 cs:0
t/cmd/for ................. ok       19 ms    20 ms     0 ms	# ET: (ms) u:10 s:0 cu:0 cs:0
t/cmd/mod ................. ok        5 ms     0 ms    10 ms	# ET: (ms) u:0 s:0 cu:0 cs:0
t/cmd/subval .............. ok       14 ms     0 ms     0 ms	# ET: (ms) u:0 s:0 cu:0 cs:0

As in a previous patch, if HARNESS_TIMER names an existing directory,
all timing data is written to a Storable file in that directory,
allowing them to be compared against each other later.

    '../cpan/Archive-Tar/t/02_methods.t' => [
      '766.416788101196',
      '460.000000000001',
      '290.000000000001',
      '# ET: (ms) u:440 s:130 cu:10 cs:150 '
    ],
    ...

Again, note the sometimes large discrepancies in the times collected.
Its typical that the t/TEST and TestInit numbers will differ by at
least 10 ms (the timing quantization), and this applies to each of the
6 numbers collected (2, 4) from respective times() callsites.

Note also the many reporting children in the getppid test.

t/op/glob ........... ok       68 ms    40 ms    20 ms	# ET: (ms) u:30 s:0 cu:0 cs:0
t/op/gmagic ......... ok       16 ms    10 ms     0 ms	# ET: (ms) u:0 s:0 cu:0 cs:0
t/op/goto ........... ok      115 ms    60 ms    60 ms	# ET: (ms) u:20 s:10 cu:20 cs:30

t/op/getppid ........ ok     4022 ms    20 ms     0 ms	# ET: (ms) u:0 s:0 cu:0 cs:0
  # ET: (ms) u:0 s:0 cu:0 cs:0 # ET: (ms) u:0 s:0 cu:0 cs:0 # ET: (ms) u:0 s:0 cu:0 cs:0
  # ET: (ms) u:10 s:0 cu:0 cs:0

t/porting/podcheck .. ok    14983 ms 14560 ms   200 ms	# ET: (ms) u:14510 s:190 cu:0 cs:0
t/porting/regen ..... ok     1034 ms   890 ms   120 ms	# ET: (ms) u:20 s:10 cu:860 cs:100
fixup op/magic.t under HARNESS_TIMER=1 make test

Hack t/op/magic.t parent process to strip the trailing "# ET: ... "
added to child's output, since this fouls the parent's parsing,
causing the test to fail.
t/TEST: add more info to Storable file written for HARNESS_TIMER=<directory>

Add several fingerprint items to Storable file:

smolt_id: which ties to a public machine profile database, to support
comparisons of similar machines.  This ID is not the same as the
public profile, but its a start.  A python file suggests that pub-uuid
exists, but I dont have it.

config_cksum: md5 of config.sh, after filtering date-ish lines and comments.

Data changes:

Add PID to ' # ET: timing-data ' line printed by TestInit.pm END block
in each test-file that uses it (usually by t/TEST adding -MTestInit to
the test invocation).  In t/TEST, instead of saving timing-data as a
string, parse it into an array of hashes, and add it to the timing
data saved to the storable file.

The array preserves the order of END/exit of all the perl subtasks (a
handful of tests are multi-process, notably: getppid, io_sock,
io_unix), which should be deterministic, and thus comparable across
runs by their array index.  PIDs of each sub-task are saved in the
hashes, and may be useful for matching with other pid-bearing data
sampled during the run, but they mildly complicate the comparison of
timing data across multiple runs.  Gaps in the sub-task pids also
indicate the process forking load of the system.