[SPARK-1495][SQL]add support for left semi join

Just submit another solution for #395
I think in general we should avoid making too many assumptions in the planner about what optimizations have occurred.  For example, in the future we might avoid pushing down predicates that are very expensive to evaluate as it might be cheaper to run them on an already filtered set of data.  However, in the case of LEFT SEMI JOIN, I think it is actually okay to push all evaluation into the join condition, even if they only refer to the left table.  Is that true?