Distinguish between various issues in exit status

Causes subliminal-test to exit with different non-zero exit
status numbers depending on what went wrong.

If tests did not complete for any reason, we'll still exit
with status 1.

If tests completed but there were test case failures, then
we'll exit with status 2.

If tests completed but there were focused tests, we'll exit
with status 3.