Implementation of Play2Perfect, from Tyler Ga Wei Lum et al. of Stanford, but with a Self Play element