Add McRouter Backend
Add McRouter Backend

Here we want to implement some different mechanics on top of Memcached.
McRouter works in slightly different ways for certain actions.

Here, we make sure that the add->delete->set logic is implemented at the
lowest backend layer by overriding `Matryoshka\Memcached::set`. This
makes the `DeleteBeforeUpdate` BackendWrap unneccessary.

Next, we reimplement `setMultiple` to use `$this->set` serially. This
may make for a minor performance penalty, but enforces consistency.

Last, we override `increment` and `decrement` to ensure consistency. We
will set the `incr` and `decr` actions in the McRouter config to be
synchronous. This means we will preferentially reset keys to their
initial values, instead of returning inconsistent results. If we did not
do this, we could not preserve expiration times.

Additionally, in the factory method, we ensure that backends passed in
are set to the ASCII protocol, failing if it is set to binary.

iFixit/Matryoshka