Update multiselect hash to require key names

Instead of "{foo,bar}" you need to say "{foo: foo, bar: bar}".
This makes it easier when you have more complicated non branched
expressions, for example:
"{foo: foo.bar.baz[0], first_state: states[0].name}"

This also exposed a bug in the lexer regarding double quoted identifiers and being able to escape quoted identifiers.  I've added additional tests to capture this bug.

cc @garnaat @mtdowling