renamed token sub-code access functions for readability

renamed setSubCodeMask() to addSubCode()
renamed clearSubCodeMask() to removeSubCode()
renamed isSubCode() to hasSubCode()
removed subCode() and setSubCode() since these were not being used
use numeric constants as data type needed (no convert codes)

when parsing numeric constants, if number will fit in an integer, then
data type is set to integer, and if number contains a decimal point or
exponent, the new double sub-code is set, however, if the number does
not fit in an integer, then data type is set to double

the union for the double and integer values in the token was removed so
that both values can be stored and be available as needed (however, a
double type constant can't be used as an integer, so a "new expected
valid integer constant" error was added for this case)

modified token data type access function to return double for an integer
constant when the double sub-code is set, but there is an optional flag
to return the actual data type

modified getExpression() to not add a convert code for constants, report
error if integer expected but constant is double (can't be converted),
or set data type of constant to data type needed and the double sub-code
is removed

modified getOperand() to set data type of integer constants if double or
integer data type operand requested and the double sub-code is removed

modified processInternalFunction() that if the function is not changed
to an associated code, then if the constant is an integer with the
double sub-code, the data type of the constant is changed to double and
the sub-code is removed

modified processDoneStackTop() to pass the token being processed (from
the top of the done stack) instead of its data type to findCode(), and
return new error ExpIntConst if findCode() returns an integer error
(invalid code returned and data type of token changed to no data type)

modified table findCode() to receive token to check instead of its data
type and set a constant token to the expected data type and remove the
double sub-code if set; for an integer expected data type, if the
constant is double (can't be converted to an integer) it is set to no
data type to indicate the error; no convert code is returned for
constant tokens

the table entries were updated for operators taking all combinations of
double and integer values where the integer/integer is the associated
code for an integer (making it the preferred operator when the first
operand is an integer); this was necessary so that integer constants
are used as integers and not unnecessarily used as a double

a new UseConstAsIs flag was added to the Power, Neg, and PrintDbl codes
to force findCode() not to set the constant data type to the expected
data type for these codes

modified token text output to add a "%" after constants that are
treated as an integer (data type was set to integer); added 'Double'
when sub-code set (should never be set on a token if translator sets
data type of constant to needed data type and removed the sub-code)

updated expected results of tests for "%" on integer constants and no
CvtDbl and CvtInt after constants; and translator added test #17
(constant test)