Run test if called directly
Test BaseSimulation.__init__
Do as little as possible in test setUp()

For example, do not go through the entire __init__ process, building up
output tables.  Also, do not use anything other than sentinel until
strictly necessary.  For this particular change, that means it might be
reverted to MagicMock in a few commits.
Test _prepare_output_tables
Test skeleton
Skeleton for run test

The run() method has a pretty complex flow. This requires quite a few
separate tests, with quite a few mocks. So I split this out as a new
class. When this works, I’m going to refactor the run() method.
Set up more mocks and skeleton for run test
Create test data for use in acceptance tests
Verify simulation results (partial)
Simplify validating a table
Validate coincidences table
Validate arrays in results
Make tests silent

Close HDF5 files, mock ProgressBar
Docstrings in acceptance test
Refactored run() method, with test
Test generate_shower_parameters
Test simulate_events_for_shower
Refactored simulate_station_response() method
TODO: reorder trigger simulation
test_simulate_station_response (partly)