handles redirects, plus more tests

When the client does a PUT on a non-leader node, the node returns a redirect that the client needs to follow.  This implements that logic.  It also throws in a few additional tests that helped me figure out how this module all works.