Fix broken constant parameter blocks This fixes the bug introduced in a previous commit, and adds a test to check that constant parameter blocks work as expected. This also refactors the Solver/SolverImpl split so that SolverImpl is no longer a friend of Problem; instead, Solver is. This makes it possible to verify the invariant on parameter block states in the unit test, and is a more symmetric design anyway. Bug: 51 Change-Id: Id503f5b526cfb8bc24aae3aaad2e414b14063d78