Destructuring and cover grammar fixes

This changes the strategy from using a transformer to transform the
cover grammars into rewinding the scanner and reparsing using the
target grammar.

This also introduces a AssignmentElement which is used for the
elements of the assignment pattern (like BindingElement which is used
for binding patterns (and default parameters).

Fixes #183
Fixes #836
Fixes #838
Fixes #969
Fixes #1015
Actually, only one of them will do work. I'm not sure how to make this cleaner?

For example if we have:

```js
(x) = 42
```

we need to "transform" that CoverFormals to a ParenExpression.