Run test suites in random order:

Randomization helps detect order-dependent tests (aka. crappy tests). Test
*methods* have been randomized for a long time; this commit randomizes the
order test *suites* are run in as well.

Example:

    class TestFoo < Minitest::Test; end
    class TestBar < Minitest::Test; end

Before: TestFoo would always run before TestBar. Tests within TestFoo/TestBar
would be randomized, but the suite themselves were called in a specific order.

After: TestBar might (or might) not run before TestFoo. It's currently not
possible to disable suite randomization, but if you have order-dependent test
you really ought to place them in the same class and use
i_suck_and_my_tests_are_order_dependent!

(This pull request implements #425)