add InternalSplit command & tests

* added a method CopyInto to the response cache, req'd for initializing a new range during a split.
* added an InternalSplit command. Making the split happen without a transitory period in which things can go wrong is subtle so this needs a good review and likely some changes.
* added some basic tests, but the transition should be bulletproofed using more tests eventually.
How about just move the code to set the ranges map entry until after the range is persisted? This eliminates the need to clean up and simplifies the code a bit. I like the idea of the range not being available in the ranges map until after it's been written to disk anyway.