* avoid duplicating impure initializers in object rest destructuring
* reuse existing VariableDeclarations in object rest destructuring, to fix two issues:
1. inserting an additional VariableDeclaration after the current one may change order of operations, which is unsafe if a future VariableDeclarator refers to a destructured variable.
2. The entire VariableDeclaration is removed when all properties are rest properties, indiscriminately removing other variables
* object rest - fix when destructuring in variables/parameters
* fixes + ExportNamedDeclaration support
* Account for CatchClause
* support ForXStatement
* support assignment expression? + PR fixes