Fixed the problem of the algorithm giving up too early.

Fix was to use errors to signal contradiction instead of nil. Using nil
to signify "false" caused the program to never actually solve a puzzle
and forced it to be impossible to signal an invalid puzzle.

Much more verbose functions since they now accept errors and return
errors.

Changed the Display() function to accept a prettify bool flag and an
error checker. Not sure if this was the best design.