added end of expression and reference data type checking

getExpression(): added level argument for expressions in parentheses;
put expected data type into a separate variable so that the originally
requested data type is still available; at the end of an expression (at
level 0 only), the resulting data type is checked against the requested
data type, and if necessary, a hidden convert code is added to the
output or if conversion is not possible an error is returned - callers
no longer need to check (process) the resulting item (on top of the done
stack)

getOperand(): for reference operands, checks the data type of the
operand if checked against the requested operand and returns an error if
it doesn't match

getInternalFunction(): for the first argument of an internal function
(with an expected data type of number), the internal function code is
changed to the associated code if the resulting data type does not match
the actual data type, and the top done item is dropped; for the end of
an internal function, the top (last) done item is dropped, the internal
function is appended to the output (if not a sub-string assignment) and
pushed to the done stack

getParenToken(): all of the operands (arguments or subscripts) at put
into the output item appended to the output list

letTranslate(): the data type of each reference has already been checked
by getOperands and so is no longer checked here; the expression to
assign also has already been checked so it is now only dropped from the
top of the done stack and the let assign token appended to the output
list

translator: updated the translator conversion code have need table with
entries for the None, Number and Any data types

table: corrected the initialization of the expected data type to use the
data type of the first operand of internal functions (operators use the
last operand)

moved functionality from old input command handler to new translator
function doneStackPopErrorToken(), which sets a token to return for an
error to the first and last operand of the item on top of the done
stack if set, otherwise to the token itself, the top item on the done
stack is then dropped (this functionality will be needed else where)

updated expected results for translator test #8 for a single array
assignment that contained a string operand, which is now reported as an
error (subscripts of array assignments are now checked to see if they
are numeric) (old results saved for old translator)