Fixed bug in forever running solving.

The issue was that when faced with a puzzle with multiple solutions, the
solver would run forever. My mistake was in the goroutines and channel.
I was making a new channel every time search() was called and a new
goroutine in every iteration of the last for loop in search(). The
answer would never end up returning.
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.