Common subexpression elimination in clang for FileScan and HashJoin build

- [x] FileScan clang
- [x] HashJoin build clang
- [x] FileScan grappalang
- [x] HashJoin build grappalang

The solutions presented here are specific to clang FileScan and HashJoin. Ideally we would break up the physical plan to make dependences on materialized collections (relations and indices) explicit and do CSE on the whole plan. But right now this is the shortest path to required functionality.