Split tests into correctness and performance

This lets you parallelize the correctness tests for faster testing.
Simplified testing part of Makefile slightly
Split up compilation of the initial modules into several steps.

This makes it easier to inspect intermediate bitcode files.