Added caching for matrix completion tasks

Due to the new changes made to how matrix completion tasks are
generated, it now takes more than a trivial amount of time. In order to
speed things up, I added caching to the ScoredChangeExp so that once
they are generated, they are stored in a file so that they don't have to
be regenerated every time the program is started. I also verified that
the algorithm works on the generated matrices when given perfect
information.