Nice! Clever solution to Issue #8, even though I wish it weren't necessary to create a custom data structure to do so. Do you see any way we could use a named tuple instead? Something like: 

```
>>>scale = collections.namedtuple('scale', 'name, item')
>>>scale1 = scale('g', {'name': 'g', 'type': 'ordinal'})
>>>scale1.name
'g'
>>>scale1.item
{'name': 'g', 'type': 'ordinal'}
```

But then we would have to list-ify everything at the end anyway. This makes me wonder why Vega uses array for top level properties, rather than objects all the way down.