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.
override null config with parent's config
use `parent=self` throughout IPython

instead of `config=self.config`

only real effective change: IPythonKernelApp.parent has been renamed to IPKernelApp.parent_handle.
don't use parent in launcher tests
allow multi-level Config parentage

now Foo.Bar.Baz can affect a Baz whose parent is Bar whose parent is Foo.

More specificity = higher priority, so Foo.Bar.Baz > Bar.Baz > Baz.
check `parent is not None` rather than `not parent`

Configurables often resolve to zero for some reason
Merge pull request #3430 from minrk/configinstance

add parent to Configurable