Added a 8-puzzle version in nxnpuzzles.py

Separated N-puzzle stuff from gstate.py.  Note, still a few N-puzzle-specific things
in gstate.py, such as the default initialization of piece_positions in the constructor.