We'll need to move the encoding up into the execute operations where the uri is being built.  That is the only place where we are constructing the individual uri path elements.  Those path elements need to be individually encoded, and then we should not need to do any further encoding here (in the ClientFilter) because it will already have been encoded.  

If a collection name has a forward slash, then at the ClientFilter, the request uri will be impossible to determine which slashes were meant to be data and which were meant to be actual uri path separators.  A simple test for this would be to change the FetchTest.fetchObjectNonUrlFriendlyCollection to use a collection name with a slash in it (like "/!" instead of " !").