Add runners for live and test environments

This adds a `Runner`, `QsRunner` and `TestRunner`. This provides
a live runner, a test runner and the common logic between them.
The runner, in both live and test environments, is responsible
for building a handler class and running it appropriately. This
is part of working with the handler pattern and allows also
unit testing handlers without having to know Qs implementation
details.