First cut at support matrix projects

This doesn't attempt to merge the coverage results from different matrix runs. It simply uses the coverage from the last matrix run as the coverage for the matrix build.