Block Binding: hoist function declaration in block to beginning of block

I introduced a `prependBlockStatement_` array to `BlockBindingTransformer` that holds statements to prepend to a block when exiting it.

An alternative solution is to have `listeners` to when the transformer is exiting a Block, and those listener might rename variables or add statements to the block (effectively reducing both needs to the same concept). But I didn't see that anywhere in the codebase, so I this seemed more correct.

Closes #1304