Refactor puzzles and code.

Moved code out of core into puzzle package.  Cleaned up puzzles in
preparation for loading them from prior state.  Designed but haven't
implemented solver paths.