Refactor AstropyTest to make it easier to subclass.

Split out most of run() into different methods so that you can override the calling signature without rewriting all the bolierplate code.
Just for consistency could you please make this `generate_test_command` similarly to `generate_coverage_commands`.
Other than that one little naming nitpick this looks good to go.