DRILL-1663: Fix casting to a variable width type implicitly in a join condition

Factor out logic in ExpressionTreeMaterializer so the same logic can be reused in ChainedHashTable.
DRILL-1631: Bump optiq version to r8
Add test case. Fix is in optiq.
DRILL-1455: enable projection pushdown past join

i) refactor project past filter to remove redundant code
ii) adding unit tests for projection past join & hybrid cases like projection past filter & join
iii) disable one TestExampleQueries#testSelectStartSubQueryJoinWithWhereClause until DRILL-1680 is fixed.
WIP for DRILL-1434