Add lexing and parsing for multiple select fields
Add compilation for multiple select fields

This also involves assigning aliases in the proper way. We first detect
duplicates, then hand out assigned names, then hand out f0_, f1_, etc. as
available.
Add test for multiple select, use OrderedDict everywhere

It turns out that the evaluation step of multiple select fields was already
working. However, tables were using a dict when they really should be keeping
the order of their columns, so this commit changes everything over to use
OrderedDict.