Block Binding: use orignal name where possible

To accomplish that, the `BlockBindingTransformer` keeps track of a `usedVars_` object, indicating which variables are used in the function so far. The object is initialized with all the bindings in the scope.

I also introduced a `Scope.renameBinding` function, that renames a binding to a new tree and a newType when needed. I use it to keep scope's data correct, mainly for `FindBlockBindingInLoop`, and also to avoid a duplicateVarDeclaration error

Closes #1274
Whoops

I'm used to using `iit` in jasmine when I want to run a test on its own, but I'm not sure how to do this with mocha and the TDD interface.
So I was copying a specific test to the top and adding `return` after it :P

I'm sure there's a better way to accomplish that.