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
Is 'lexical' helpful? Seems irrelevant and distracting.  (Reporting the scope chain might be helpful on the other hand).