Enforce indentation
Add Problem interface
Rename private names
Simplify namespace hierarchy
Fix typo
Rename typedef
Change problem name

'Sliding block puzzle' is a general term for a family of puzzles.
'n-puzzle' is the proper name.
Use meaningful typedef name
Remove unused code
Move InvalidInputError into upper namespace
Refactor
Change indentation for throw
Refactor by reducing code
Remove unnecessary accessor
Fix indentation
Refactor
Add whitespace after throw
Fix indentation
Remove unused includes
Add NONE to npuzzle::Actions

NONE is used to represent a null action, which is used by
initial states (See search::Node).