Overhaul of partest-ack.

Seems like many/most options to partest are broken. Working
around as much as I can to make this thing useful again, plus
lots of improvements in robustness. Spaces and such are
preserved properly now, and I added a new way of selecting
tests based on time.

  tools/partest-ack -s 1.week.ago
  % tests modified since time       ...  66

  tools/partest-ack 'case object (Foo|Bar)'
  % tests with matching paths       ...  0
  % tests with matching code        ...  7

File paths and file contents are uniformly acked now, so
for instance this works as expected.

  tools/partest-ack -i VIRTPAT
  % tests with matching paths       ...  41
  % tests with matching code        ...  11
  # 43 tests to run.
Merge pull request #2873 from paulp/pr/partest-ack

Overhaul of partest-ack.