Randomize order of test execution by `make runtest`

Unit tests shouldn't depend on order of execution for correctness.

The gtest flag `--gtest_shuffle` randomizes the order of test execution by seeding from the current time, and this seeded is reported at the top of test output for reproducing failures.

`make runtest` now randomizes by default.

Note: this most likely shouldn't be instantly merged. Instead, you should try this out and fix any order-dependent tests you uncover. I have yet to find any others than #264.