stbt.as_precondition: preserve screenshot from intercepted failures

Just because the error comes from inside the `as_precondition` context,
to be marked as a "less interesting" failure, doesn't mean that there's
no value in keeping the screenshot from the intercepted Exception.

pylint W0201 is "attribute-defined-outside-init".
New tests that `stbt run` saves screenshot

This was already tested by `test_wait_for_match_no_match`, but it's
better to have an explicit test in the `stbt run` test suite, because
it's `stbt run` that saves the screenshot. In future when `stbt.py`
becomes an importable module that can be run from plain python, it won't
make sense for the `stbt.wait_for_match` tests to test the screenshot-
saving behaviour of `stbt run`.

Also added `test_that_stbt_run_saves_screenshot_on_precondition_error`
to test the behaviour/fix added in 98e682c0.