We currently use lots of internal data structures like Tuple, Record and DataShape to construct datashapes. Maybe we can get away with tuple, ordereddict, and list?
`10 * var * {name: string}`
DataShape([10, var, OrderedDict([['name', 'string']]))
This might make traversing these data structures much cleaner. I think that this choice should be mostly invisible to the user.