Factored out VariableScope, introduced VariableScopeStack
Factored out with_new_scope_rescuing_oops.
Factored out module Niceness.
VariableScope values are VariableState, no longer booleans.

VariableState is an object to
- track various aspects of a variable. niceness for now
- combine with another state, once we handle branches and cycles