Got rid of the 'Dao.Interpreter.checkEmpty' function from the public
API. Now this function is always evaluated last when evaluating a
'Dao.Interpreter.FromDaoStruct' monadic function, which guarantees an
error will be thrown unless every last field in the
'Dao.Interpreter.Struct' that has been used.

Also, modified the 'Dao.Interpreter.setupDao' function to return the
result of evaluating the 'Dao.Interpreter.Exec' monadic function that was passed to the
given 'daoInitialize' function, rather than the 'Dao.Interpreter.ExecUnit'. I am trying
to keep 'Dao.Interpreter.ExecUnit's from ever being used outside of the
"Dao.Interpreter" module.

Finally, I created the 'Dao.Interpreter.evalDao' function for evaluating
a 'Dao.Interpreter.Exec' monadic function using a completely blank
'Dao.Interpreter.ExecUnit' with no setup. The function evaluates to an
IO function returning the 'Dao.Predicate.Predicate' object produced by
the evaluation of the 'Dao.Interpreter.Exec' function.
Created the files in preparation for creating some new data types that
will be built-in to the Dao programming language.