Features for real applications on grappalang

- UDAs in grappalang
- types in grappalang; includes scheme as std::tuple for tuples
- any number of columns for groupby and hash join

common changes for review:
- move `convertcondition`
- grow `FromFileCatalog`
- add support of more expressions to `ExpressionVisitor`
- `SwapJoinSides` applied to crossproducts
- grow `scripts/myrial` api
My bias would be to push as much as possible into the code generator.  Having two levels of code generation hurts my brain.  Reasonable people can disagree.