[OPTIQ-368] Add SemiJoinRule, planner rule to convert project-join-aggregate into semi-join

Also add JoinRelBase.analyzeCondition() and class JoinInfo, making it easier and cheaper to analyze join conditions.