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. This has become very similar to how Deas currently
handles the sinatra object. It is passed through to the runner
and is accessible to the service handler.