stbt-run: Exit with different exit codes by exception type

To make interpreting test results by a test harness easier, `stbt run`
exits with exit code '0' on success, '1' if `stbt.UITestError` is raised
indicating a test failure, and '2' if any other exception is raised
indicating a test case error or environment error.

The test execution framework shall be configured to report the two
types of failures differently, so that it's easy to distinguish between
bugs caught and other kinds of errors.