Allow destructuring pattern in arrow functions passed as arguments or on LHS

It didn't work for arrow functions on the rhs or passed as argument. I.e. the following constructs threw a syntax error:

```
var x = ([a, b]) => 42;
foo(([a, b]) => 42);
```

Since arrow functions are usually used as argument for other functions, destructuring in arrow functions was useless so far.

Since I have only little experience with parsers, there may be a better way to do this....
Oh, you are right. 

Just to explain why I added this in the first place: Consider `var x = ([a,b]) => 42;`. When I logged the value of `lookeahead` just before `match('=>')`, it showed that the token is a `)` so I assumed that was the reason why it did not parse the expression as arrow function.

But I guess the parenthesis are resolved some other way and eventually this function is called again and the match succeeds.