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....
> `var f = {a: x, b: y} => x+y;` and `var f = [x, y] => x+y;` should be syntax errors. This should be pretty simple to support...the assignment expression will have to start with a paren.

That would also be the case with esprima. So, I still need some flag that keeps track of the `(` matched here, don't I?