grid api

we *add* keys to nested objects on instantiation, this logic at minimum needs to be repeated in setitem to be reliable (i think)

the case of:

```python
Figure({'data': [{'type': 'scatter', 'y': 'source-string'}]}
```