Block binding: Fix issue with sibling scopes

This introduces a new Scope subclass that keeps track of references.
Then we use that to determine if we need to rename the binding or not.

Fixes #1358
We hit this in the free variable checker.