(GEP-109) Allow any value as hash key

This commit changes the parser so that the key in a HashLiteral
can be any expression. It also adds a new allowAnyValueAsHashKey
advice to the IValidationAdvisor. This advice is set to false
for all platforms below 4.0.

The new advice is consulted by the validation logic. When false, it
will perform validity checks on the key to ensure that it is either
a literal that conforms to the NAME rule or a quoted string (single
or double).