We can now convert most types deriving Data.
Also, change the parsing code from being based on Applicative to
using an efficient continuation-based Parser type, with a Result
type signalling the result.