Map key and values are encoded directly instead of having the entire key value concatenation encoded. This permits special characters to be used in key and value values.

Test coverage has been provided.

In addition the delimiters used for encoding have been changed to '=' and '&' given that these are permissible characters to appear as cookie values according to RFC 6265: http://www.rfc-editor.org/rfc/rfc6265.txt