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