Const checker

This refactors how we build the scopes and then implements a check that validates that we are not mutating const bindings.

Fixes #18
Passing a `ScopeBuilderBase` here (and additionaly calling it a `scopeBuilder`) is confusing to me.  What this class needs is a `ScopeMap` or `ScopesForTreesMap` to validate.