Better variable renaming for let scopes.

I've done some playing with the let renaming so that it also uses remapping from parent scopes. It fixes cases like:
```javascript
let x = 1;
{
  let x = 2;
  {
    let x = 3;
    console.log(x); // should print 3
  }
}
```