PLUR: A Unifying, Graph-Based View of Program Learning, Understanding, and Repair