Graph-based, Self-Supervised Program Repair from Diagnostic Feedback