Clean up CTest test management
- Add explicit timeouts to CTest tests. These should work better than
the current Jenkins timeout: it should produce better JUnit test
reports, and should catch also tests that end up in an infinite loop
printing stuff. The timeouts are still quite generous, since at least
the coverage run can take a while.
- Use a more easily extensible and better encapsulated mechanism for
producing the messages about missing tests with 'make check'.
- Abort if running a non-MPI test binary with MPI instead of trying to
run it on the master rank, since it might deadlock.
- Clean up the macros used to register CTest tests and use a clearer set
of test labels, and move more logic into src/testutils/CMakeLists.txt.
- Resolve various TODOs.
Change-Id: Ia1370d99eabd5839682832e8c3c60668a667cdde