Fixed bug causing incorrect solution.
When the controller decomp(...) function would run, it would change the modulus using ZZ_p::init(), so if the decomp failed and the 'do while' loop in generate_problem() needed a second iteration, the ZZ_p base and target would be incorrect because they would be using the incorrect modulus. The decomp(...) function now resets the modulus before it exits.