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.
I removed the `inplace=True` flag from this as it was breaking things.

Specifically I was getting this error:

```
python setup.py test
running test
Traceback (most recent call last):
File "setup.py", line 122, in <module>
**package_info
File "/usr/lib64/python2.7/distutils/core.py", line 151, in setup
dist.run_commands()
File "/usr/lib64/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/home/stuart/GitHub/sunpy/astropy_helpers/astropy_helpers/test_helpers.py", line 137, in run
self._build_temp_install()
File "/home/stuart/GitHub/sunpy/astropy_helpers/astropy_helpers/test_helpers.py", line 184, in _build_temp_install
self.reinitialize_command('build', inplace=False)
TypeError: reinitialize_command() got an unexpected keyword argument 'inplace'
```