Define `Runner` and `ViewHandler` for running routes

This adds a `Runner` and `ViewHandler` for running routes. These
are called when a route is run by the Sinatra app. This enables
defining views via the `ViewHandler` mixin and using many of
Sinatra's helpers. View handlers are run using a runner, either
the default `Runner` or the `TestRunner` when testing view
handlers. This provides the ability to both define views and have
them generate valid responses and also unit test them.