Towards more sensible yaml parsing.

One of the goals is to allow grid parsing to fail, hence
things like parseClueGrid to replace readClueGrid.

Secondly, to keep the puzzle-specific parsing definition
as general as possible, hence aim to get rid of RawPuzzle
and ReadPuzzle in favour of a pair of parsers.

Overall, I want to parsing to be able to fail nicely (so
we lose say the tightfit pattern matching errors), and to
not require the presence of a solution.

For the switch to Parser, I'm also going with a more typeclass
heavy approach (use FromJSON, introduce FromChar). Not entirely
sure that's a good idea.

For now, Masyu has been converted to the new style, with a
compatibility shim.