Pattern Analogies: Learning to Perform Programmatic Image Edits by Analogy