Towards the goal of shareable and reusable tests, I think it would be beneficial to allow metadata in environment definitions. Such metadata could include things such as compiler family, MPI implementation etc. This would allow tests to differentiate their behaviour based on this metadata instead of setting the valid_prog_environs, which could be set rather generically. This is very similar to what we have done with the processor information in #1773.