ENH: add resolver field to Scope objects

The interface is that the resolving object must implement a `get` method that
takes a dict key and an optional value to be used in case the key cannot be
found.