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
Can we have tests that hit this `if`?