Bug fixes: firstly, the function overloading was not working. Defining a
function of the same name twice, regardless of the parameter list
provided, would overwrite any previous definition. This was due to the
fact that function definition was made to work as a simple local
variable definition. I have instantiated the
['Dao.Interpreter.CallableCode'] data type (a list of
'Dao.Interpreter.CallableCode' objects) into the
'Dao.Interpreter.ObjectClass' class, and updated the necessary
instantiations of 'Dao.Interpreter.Executable' to overwrite local
variables with more recent values only if the value of those variables
are not a list of 'Dao.Interpreter.CallableCode' objects. If they are a
list of 'Dao.Interpreter.CallableCode' objects, the later list is
appended to the earlier list, rather than overwriting it. This has been
fixed.

Also, the instantiation into the 'Dao.Interpreter.Executable' class for
'Dao.Interpreter.AST.RefPrefixExpr', which can contain values of
'Dao.Interpreter.AST.ParenExpr's, was not correct.
'Dao.Interpreter.AST.ParenExpr's were being evaluating to
'Dao.Interpreter.RefObject's values rather than an ordinary
'Dao.Interpreter.Object' values, and this was resulting in some odd
behavior, for example expressions like "a + (b)" were failing because
"(b)" was evaluating to a 'Dao.Interpreter.RefObject' containing a
'Dao.Interpreter.Reference' called "b", instead of the value which the
'Dao.Interpreter.Reference' called "b" points to. This has been fixed.

Finally, the shift-right operator was not working because a right-shift
uses the instantiation of
('Dao.Interpreter.XPure' 'Dao.Interpreter.Object')
into the "Data.Bits.Bits" class, and shifts using a negative integer.
However, this negative integer value was being passed to "Prelude.drop"
to drop the elements from the list, but passing a negative value to
"Prelude.drop" returns the list unmodified. Now the integer value passed
to "Data.Bits.shift" is negated before being passed to "Prelude.drop"
so the list is shifted as expected.