fix creating config objects from dicts

ensures that sections are subconfigs, such that:

```python
cfg = Config({'Class' : {'trait' : value}})
```

results in the same object as

```python
cfg = Config()
cfg.Class.trait = value
```

Previously, this would not cast the `Foo` dict to Config,
which would cause merges to fail, etc.