add parent to Configurable...
add parent to Configurable
this adds the notion of a parent and member config,
so the config:
c.Foo.Bar.attr = value
will only set `Bar.attr = value` for `Bar` instances
which are members of `Foo` instances.
The mechanism for doing this is
```python
f = Foo(config=cfg)
f.b = Bar(parent=f)
```
This Instance config has higher priority than plain class config for Bar,
but still lower priority than direct keyword arg trait assignment.
The main implication this has is to change the standard creation of descendants:
```python
self.bar = Bar(config=self.config)
```
into a direct parent expression
```python
self.bar = Bar(parent=self)
```
This also means that most Configurables will actually have a handle on their parent object.