The parse function accepts a query string and if successful produces a value of
type QueryTerm. For example, the query string "foo -bar | x y" yields the QueryTerm
Disjunction [ Conjunction [ Word "foo", NotWord "bar" ], Conjunction [ Word "x", Word "y" ] ]