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
Yes, we use them in the Grappa code. But I was worried about creating a dependence on gflags/logging. I wonder if this file actually belongs in a different repository anyway. I created #361