Disjunctive Program Synthesis: A Robust Approach to Programming by Example