Add support for destructing assignment in VariableDeclarator

There can be Destructing Assignment in VariableDeclarator when looping through object.
```for (let {a: b, c: d} in obj) {}``` - ```ObjectPattern```
```for (let [a, b] in obj) {}``` - ```ArrayPattern```

Here's the example on MDN
https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7#Looping_across_objects

```VariableDeclarator``` can contain Pattern in its ```id``` part
https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API#Declarations

Patterns can be of ```ArrayPattern``` and ```ObjectPattern types```
https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API#Patterns