Improved the function that executes string queries so it can select
which rule sets to use, rules defined locally, rules defined globally,
rules passed as function arguments, or any or all of the above. I also
added built-in Dao functions mapping to these behaviors: "do()" and
"doAll" were there before, I have added "doLocal()", "doLocalAll()",
"doGlobal()", "doGlobalAll()", "doIn()", and "doInAll()".

Also, made rule execution automatically define a variable called "this"
which evaluates to the current query string.
Modified the behavior of the "throw" and "try-catch" statement so that
"throw" without any arguments will result in a backtrack (i.e. in the
interpreter it will evaluate to 'Control.Monad.mzero'), and the "catch"
statement will catch backtracking such that the variable name that
stores the error value for the catch statement remains undefined.