RunTests for a total amount of time

2 new overloads for RunTests:
RunTests(TimeSpan)
RunTests(int mins, int secs)

In order to still run it in various orders it runs batches and each
batch is in a random order.  It starts with a batch size of 1 and then
based on how long that takes it estimates a new batch size in order to
get approx 1 batch for each test.  So if you are running 4 different
tests, it should try to do this in 4 batches to give each test a chance
to go first.