Make State constructor private

This constructor accepts the index of blank cell and doesn't
validate arguments. It should be called only from Problem class.
Change filenames of template headers
Refactor
Remove unnecessary const qualifiers
Refactor
Refactor