Support polymorphic Scope nest method

Revisits the Scope implementation and nesting.  Scopes should be nested
with a method, which can in turn be overridden.  Scope should inherit
their properties when nesting, so they do not have to be passed forward
to nest.  Thus, the root scope can be extended to the advantage of all
child scopes.