Added changes to implement the Warnsdorff Rule.  This algorithm looks ahead to all the squares that are available to the currently active square and chooses the next one based on which square has the fewest moves available.  There is one bug right now in that the last square is not closed in.