Bug fix: the instantiation of 'Dao.Tree.Tree' into 'Prelude.Ord' was incorrect, which was causing
some odd problems when comparing sets or maps that contain 'Dao.Tree.Tree' objects, and was also causing tests to fail because two identical objects were being compared but because the ordering of the 'Dao.Tree.Tree' data types in the sets or maps were not predictable, the sets were not comparing as equal, even if all the elements were in fact equal.
I am not committed to making use of the new parser. I may have got a bit carried away, but I think a two-phase parser with distinct lexical analysis and syntactic analysis functions "piped" together will make for the most efficient parsers that can also be easily extended to other languages.
Removed the functional dependency constraint on the 'ErrorMonadPlus' class, it just wasn't necessary, and it was preventing me from implementing a more general, common-sense definition of the 'mapPFail' function.