Smart moves

Square shapes now uncount moves that return to the same spot, independent of the corner that the corner was on to move it last. I haven't found any false positives or missed negatives, so this feature seems complete. MMMMMMerge.

Changed the link to the mit license. Added a test for within_bounds. Started a test of top_corner but noticed that it is a lib function for redraw_affected, but that's part of redraw_affected which is part of render_change, which I don't use anymore. I'll have to decide whether to keep this.

Ooh, I forgot to refactor/extract from the move_counter_update. Perhaps I'll do that now.
:x
Sin. Anyway. extracted the square_checks from move_counter_update, which is enough refactoring for now. mmmmmmmerge time.