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
Why not use std::min?

Why are the arguments passed by value?