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
Fixed up some tests given the new cookie encoding/decoding - these tests were not present in the 2.1.x branch, or perhaps are elsewhere.