Partial support for destructuring in block binding

This handles patterns in let and const declarations but not yet
in loop headers.

This also simplifies the generated code, in that it does not
hoist a variable declaration when it is not needed.

Issue #1276
We set this member flag according to `this.scope_`, but then we transform, possible descending into other scopes.  Maybe a comment would help me understand why this works.