You'll notice a mild asymmetry in how hash was
saved vs retrieved.
The retrieval was:
JSON.parse(decodeUrlComponent(hash))
The save was:
JSON.stringify(hash)
I modified it to:
JSON.stringify(encodeUrlComponent(hash))
The reason I noticed this is in one of my apps,
I wanted to be able to copy/share a stateful filter URL.
However without the url encoding, those auto-parsers
of URLs were missing the full filter.
TESTING CONDUCTED:
1. Updated the Hash unit tests to both parse the
encoded string, as well as generate it.
2. Ran "grunt", which has built/tested/jslinted
the code.