Merge pull request #124 from redding/jcr-config-file

Add `ConfigFile` for evaluating Sanford config files
`TestRunner`, dependency inject attributes on service handler

This adds dependency injecting attributes on service handlers
with the `TestRunner`. This allows passing more than just params
when using the `test_runner` test helper. The `TestRunner` now
takes a hash of args and it will pull out keys for params, logger
and a request. Any other keys in the hash will be used to try and
write their values to the service handler it builds. This allows
dependency injecting values when a handler is built.

This also changes `Runner` to no longer have an `init` and `init!`
methods. These were originally done when `Runner` was a mixin that
could be used and configured on servers. This is no longer the case
and they were only used by the test runner so there's really no
need to keep these methods.

This also moves the serializing of a response. It is now done
whenever the test runner builds a response, either from initing
or running the service handler, not just when its run. This makes
sure that when a handler halts in its `init!` or a callback, we
also try to serialize these responses to ensure they don't throw
any errors.

Finally, this adds unit tests for the test runner. Previously it
was only tested implicitly via the service handler.
Merge pull request #123 from redding/jcr-runner-dep-inject

`TestRunner`, dependency inject attributes on service handler
Rework `CLI` to use `ConfigFile, `Process` and `ProcessSignal`

This reworks the `CLI` to use all the new logic. It now expects
a config file path and builds a `ConfigFile` to evaluate it. The
server from the `ConfigFile` is then either passed to a `Process`
or `ProcessSignal` depending on the command. Sanford supports the
same commands it did previously: run, start, stop and restart.
This makes all of Sanford's old manager, host and host data logic
no longer needed and it will be removed in a future commit.

This also fixes an integration bug. The process was passing a `nil`
ip and port to `Server#listen`. This is invalid and will cause the
server to try to bind to an ip and port of `nil`. This is fixed
by compacting the `nil` values from the listen args the process
builds.
Merge pull request #126 from redding/jcr-rework-cli

Rework `CLI` to use `ConfigFile, `Process` and `ProcessSignal`
Rename `Server::ConfigData` to `ServerData`

This moves the `ConfigData` out of the `Server` file and renames
it `ServerData`. This is setup for passing the `ServerData` down
to the route, runner and having its data accessible in service
handlers. Ultimately, its needed throughout Sanfords stack and it
felt wrong to require the server everywhere it was needed. This
moves it to its own file but keeps it associated with the server
by renaming it with the `server` prefix.
Merge pull request #127 from redding/jcr-break-out-server-data

Rename `Server::ConfigData` to `ServerData`
Pass `ServerData` to route, runner and service handler

This adds passing a server's `ServerData` to a route when running
it. The route then uses the `ServerData` to build a runner. This
changes `Runner` to require a server data and forces the
`TestRunner` to build one and `super` it to conform to this. This
makes the `ServerData` available to the runners and also service
handlers, which allows removing usage of `Sanford.config`.

Previously, runners used `Sanford.config` to default their logger
and service handlers used it to default their template source.
Since `Sanford.config` is going away, they needed to get this
data through their server's configuration.

This also makes a small change to runners to demeter their
request params. This is called by the service handlers `params`
method instead of it calling the request and then calling `params`
on that.

Finally, this adds more complete unit tests for `Runner` and
`SanfordRunner`.