redmine4094: Infer start-time from elapsed when needed.

Some variants of ps report start-time as a date if before today (no
matter how recently today started) or even report a year for dates
before this year (even if new year's day started mere seconds ago).
These, naturally, give very imprecise information.  When that happens
but we have an elapsed time column (containing a value we can parse),
use this to infer a better start-time.  At the same time, improve
parsing of relevant time strings generally.  Based on a patch from
Tony Lill - many thanks.

Added an acceptance test.  Failed before the fix, passes with it :-)
This is consciously a platform-specific test, except that it's not platform *per se* so much as the particular quirk of ps behaviour, where processes started before today (even if today only started in the last few seconds) aren't described by a start-time but by a start-date (or even year).  So init's munging of ps-output is all about looking to see if there are examples of that; if it sees none, the test passes by default.  This may make for some flakiness of the test on any platform where it fails - it won't fail *reliably*, because we can't rely on there being processes that have been running since yesterday and, if the failure is on one side or the other of the early/late split, we can't rely on having some processes started on the failing side - but constructing a test that *does* fail, in the presence of the relevant bug, is as much as I can manage.
So the test *should* pass on windows, simply because got_ps or got_now shall fail - or, otherwise, because we'll get no relevant data (got_data), hence no got_early or got_late.
The whole `got_*` family is there for this reason.