Use concurrent.futures.ThreadExecutor for testrunner threads

Moves from controlling threads with a semaphore to a slightly more
convenient thread pool.

Moves printing to be on the main thread.

Removes unnecessary thread for supervising tests.

Bug: 129406631
Test: art/test/testrunner.py --dry-run (and simulate failures locally)
Change-Id: I23244d35afa2341f1696ebc60cd009fb133ba872
1 file changed