Only use the diag-merge feature if it exists
Submit results per-testfile
Run tests inside Coro async{} block to return control to Anyevent

While running tests, the main Anyevent loop is blocked.  This means
that any process which involves events being received by the mainloop
will not complete.  This affects creation of message queues used to
submit test results, for instance, which require that
AnyEvent::RabbitMQ::RPC read acknowledgements from the RabbitMQ server
for each step of the queue creation.

Solving this correctly would require that TAP::Harness use an
event-based multiplexer and read loop, ensuring that blocking IO was
never used.  This is a far more complex change than slapping an
async{} block arount it, which allows event-based code to co-exist
with explicit control.  However, async{} in itself is not sufficient
to allow event-based loops to run; see the following commit for the
remaining changes.
Use Coro::AnyEvent::poll to provide hooks for events

Place calls to Coro::AnyEvent::poll in locations which are called
frequently, or which are liable to require event servicing shortly
thereafter.  These would not be required if TAP parsing were done in
an event-based manner.