Switch to a complete event-based backend

The previous implementation used techniques to still present an iterator
interface; while the "select" had been replaced by I/O events, the
iterator nature still required a blocking call.  This caused odd
interactions with the event-based RPC calls that the worker used
elsewhere, causing them to be delayed or sent out of order.

By switching to a complete event-based interface, these problems are
prevented, and the complexity of presenting as an iterator can be
removed.  TAP::Harness already presents callbacks to its users, making
adaption of an event-driven interface mostly transparent to its
consumers.
As we suggest both -p and -P, configure GetOpt to respect case
For completenes, include a vhost option
If previous test run times are provided, use them to order tests

Parallel tests should optimally be run from longest to shortest, to
minimize leftover time at the tail end of the testsuite.  If
previous-test-timing information is passed, use it to order tests:
  * Unknown tests go first, as they may be long
  * Otherwise, order by test length, longest to shortest
  * Finally, fall back to asciibetical