Stop using `Rake` for running benchmarks

This changes the benchmarks to stop using `Rake` and just use
the Sanford CLI and ruby scripts. This minimizes using Rake with
the gem and only requires it for gem building. I'd rather not rely
on extra dependencies that are not needed and for this case, Rake
isn't needed.

This removes the "run X requests against the Benchmark server"
functionality. This hasn't been used since Sanford has been stable
and isn't related to "benchmarking". It was more of a system test
to see that everything worked when running a server.
Merge pull request #132 from redding/jcr-bench-no-rake

Stop using `Rake` for running benchmarks
Rename `FakeConnection` to `FakeServerConnection` and simplify

This renames the test support `FakeConnection` to
`FakeServerConnection` and simplifies it. The goal of this is to
clarify the difference between a fake protocol connection, which
is part of `Sanford::Protocol` and a fake server connection which
is part of `Sanford`. This also simplifies its implementation. It
was previously used for other tests and had extra behavior built
into it. It is now used only for server and worker unit tests so
its behavior could be scaled back.
Merge pull request #133 from redding/jcr-rework-fake-connection

Rename `FakeConnection` to `FakeServerConnection` and simplify
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.