Created Scope and backing reusable SmartMap object
No Scope.set() method, can only create sub-scopes with new values
Merge branch '4.0_scope_object' into 4.0.x