Refactor valid() to return null on possible
formatting
Adding loop ID fixes #4 works on #5 works on #13

The loop ID controls the color it is drawn, and will make it easy to
tell that the whole puzzle is a single loop, which will make correctness
better!
We draw now at the end of a click, after all the data has been set.