Added a `Runner` concept, for running handlers and testing

This adds a `Runner` concept to Sanford that handles the logic of
properly initializing and running a handler. This adds the ability
to relatively easily test handlers (since Sanford controls
initializing) and also cleans up some of the code that handles
the `halt` behavior of handlers.
Move `init` out of `initialize`, have `Runner` call it

This moves the `init` method out of the `initialize` of the
`ServiceHandler` and is now called by the `Runner`. Since the
`init` has the ability to generate responses, it needs to be
part of the response method, but doesn't have to be part of the
initialization of a handler. For testing, the `TestRunner` will
initialize and call `init` on a handler. This way, in a testing
environment, you can get a handler that is setup but not run.

This also overhauls the `TestRunner` and test helpers to be a
simpler. The `TestRunner` will "build up" a response as you use
it's methods and then tests can be run against the handler and
the response it generates.