A Provably Convergent and Practical Algorithm for Min-Max Optimization with Applications to GANs