Improve the error reporting in the drivers

The drivers will now print their name when they fail to make it easier to
identify what broke. Exit codes are also more orderly, with 1 meaning "tests
failed", 2 meaning "bad arguments", and 3 meaning "infrastructure failure".