Solver implement

Merge in completed solution checker with new tests.