Normalize shorthand object properties.
Normalize shorthand object properties.

After this change, the AST no longer has special forms for shorthand object properties (i.e. {x}), neither in object literals nor in object destructuring patterns.  Import specs are unchanged.

All handling of shorthand properties has been pushed to the extremities of parsing (which returns the same AST as {x:x}, except the STRING_KEY node has an IS_SHORTHAND_PROPERTY annotation) and code generation (which will re-collapse the property if the annotation is present and the names are the same).

This greatly simplifies a number of checks, transpilations, and optimizations, which now no longer need to deal with a different form of tree.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=179255046

teppeis/closure-library,lucidsoftware/closure-library,teppeis/closure-library,google/closure-library,lucidsoftware/closure-library,teppeis/closure-library,google/closure-library,lucidsoftware/closure-library,teppeis/closure-library,lucidsoftware/closure-library,google/closure-library,google/closure-library,google/closure-library