Rewrite parser to use FromJSON

The former parser was too coupled to the internals of `Data.Yaml.Parser`.
This is a rewrite using `Data.Yaml.Value`, and enables the use of a pure `decode`.