Fix issue where url key's were not being encoded properly if they contained a plus.

The current url_encoding code was not doing the full encoding for the key part of a dict set. This would cause keys natively containing a plus character to not be encoded correctly. The url_decoding was correct already.

Test case added to cover this.