utils: only attempt decodeText on non-empty strings
utils: don't keep empty keys with no values
test: add more parseParams tests
utils: ensure decodeText always returns a string
utils: special behavior for * and = are for parameters only