Support hoistable / non-hoistable variables

In this commit, we fix the let/const declaration behavior.

var i = 20;  // (1)
{
    i;  // (1)
    let i = 20;  // (2)
    i;  // (2)
}

ref #33