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
this is worth considering, see #364. 

As a general note, the funny thing about generating C++ is how to split the generative programming logic between the the code generator and templates