added save/load function so that gpgos can reload previous evaluations
moved GPGO to separate file so that the ipynb is only showing top-level material