Simplify `Sanford::Runner`

This is a set of changes that simplify `Runner` and decouple
the `SanfordRunner` and the `TestRunner`. Previously, the
`TestRunner` had to jump through hoops to work with `Runner`. This
was because `Runner` was providing logic that only `SanfordRunner`
needed. This was originally done because `Runner` use to be a
mixin that was could be used to define a custom runner and
configure it with a Sanford server. This is no longer the case and
`Runner` is now a class.

`Runner` has been simplified by not deciding how its attributes
are set. It only requires a handler class and it will build the
handler. The `TestRunner` is now free to expect its attributes are
optionally passed to it. It also doesn't have to worry about being
provided or building a server data. These changes move `Runner`
logic to the `SanfordRunner` which allows it to continue to require
a request and server data are passed to it. The `SanfordRunner`
can also be more strict and not worry about defaulting attributes.

With the moving of logic into the `SanfordRunner`, it's tests have
been beefed up to ensure it is providing the behavior it should. In
addition to this, this ensures that it runs multiple before and
after callbacks in the correct order.

All of this allows the `TestRunner` and `SanfordRunner` to work as
needed without extra hoops to jump through but still allow them
to provide the desired interfaces for their contexts.
Merge pull request #131 from redding/jcr-restructure-runners

Simplify `Sanford::Runner`
Add `render` to `TemplateSource`, decouple from `ServiceHandler`

This adjusts the template rendering behavior to decouple service
handlers and a template source. `TemplateSource` now provides a
`render` method which is all the service handler needs to call to
render a template. The `TemplateSource` takes care of finding the
templates and finding a matching configured engine and calling
`render` on it. This keeps service handlers from having to know
how to lookup engines and centralizes all the file extension
handling.

This also tweaks the template lookup slightly. Sources will now
reject templates for which they do not have a configured engine
for. This covers ensuring we do not select a `.rb` template
(since we don't allow engines to be configured for this extension)
and avoids a really minor issue with trying to render a template
when there are two or more files with the same name but different
extensions. If you try to render "template" and you have a
"template.erb" and a "template.json" file in your source path,
then the previous logic would always choose the erb file. If the
source was configured to work with json but not erb you can't
render your json template. Only selecting templates that are
configured helps to pick the correct template in this rare
situation.
Split service handler tests into unit and system tests

This updates the testing for service handler to split the existing
tests into unit and server tests. The unit tests no longer use the
test runner to test the service handler. They are strictly unit
tests testing the behavior, but not testing how a service handler
would typically be tested. This is now done in the system tests for
service handlers. In these tests, the test runner is used to run
the same handlers used in the server system tests. This ensures
that service handlers (and their runners) work as expected in
both live and testing scenarios.

Since we switched to using the app server handlers, I was able to
remove the `test/support/service_handlers` file. Both of these
files had the same "kinds" of service handlers. I wanted to have
the same handlers used in a live and testing scenario, so I
decided to re-use the app server handlers and remove the other
handlers.