Trying to solve a pretty major bug that has arisen from the use of the
'Dao.Interpreter.ObjectFocus' monad for handling updates and look-ups in
data types. Look-ups that fail backtrack but can succeed and execute a
function call that backtracks so look-ups in multiple namespaces can be
evaluated more easily. However, backtracking is caught by the lookup
catch, and if the function call that backtracked was evaluated in a
"try{} else{}" expression, the else expression will fail to be evaluated
because the lookup function catches all backtracking. To solve this
problem, a new system of error throwing must be implemented such that
the 'Dao.Interpreter.ObjectFocus' monad can throw an exception that can
be caught rather than relying on backtracking exclusively to perform
look-ups across multiple namespaces.

Also, lookup operations should be a special case of update operations
that perform no updating. I am modifying the
'Dao.Interpreter.ObjectLens' class to eliminate the separate lookup
function and re-declare every lookup function as a special case of
'Dao.Interpreter.updateIndex'.
I have revamped the error reporting data types, and I have finished
making all the most tedious modifications to all of the places in the
interpreter code and built-in data type libraries code that report
errors to make use of these new data types. Although it still seems like
kind of a hack to me, it is certainly more elegant than what I had
before.

I have also completed making the necessary changes to the instances for
'Dao.Interpreter.ObjectLens' which should solve the stateful updates
problem I had before. Now I just need to work out some bugs that have
appeared due to these changes.
I have revamped the error reporting system and modified the
'Dao.Interpreter.ObjectFocus' monad to make use of boolean values in
it's stateful data structure to make more efficient decisions on
resolving references to objects. This has solved a some major design
problems, but I am still in the process of debugging it.

I have also added the "tests/updates.dao" test program for testing the
behavior of stateful updates to global variables caused by functions
executed at the top-level of the program. Much has passed, but some
tests are still failing.
I am still in the middle of debugging, but I have committed some changes
that have fixed some of the logic applied when dereferencing function
call expressions. Still, not all 'Dao.Interpreter.ObjectFocus' monadic
functions have been updated to evaluate using the assumption that when
an undefined reference is encountered the function should evaluate to
'Control.Monad.mzero'.
Bug fix completed: finally, I have worked out all the little details
that have caused the interpreter to behave incorrectly after making
changes to the definition of the 'Dao.Interpreter.ObjectFocus' monad.
All test cases I have written so far are behaving as they are intended
to, and the dereferencing/backtracking bug which I was trying to solve
this whole time has been solved. In the process I have also updated the
error data type to make it more useful and improved the error reporting
mechanism.