Fix hoisting of let/const declarations.

Only hoist top-level let/const declarations and fix bug with
initializers of hoisted declarations.

Fixes #1028.
I see that the tests cover for-in and for-of... I'm not really sure how this works for them but not for c style for loops?