recreate unnecessary entered parentheses

the parentheses sub-code is used to remember unnecessary parentheses
that was entered into an expression and when there is a second set of
unnecessary parentheses, the close parentheses code is inserted into
the code (which does nothing at run-time)

the parenRecreate() function was implemented that pops the top of the
stack with parentheses added and pushes this back to the stack with the
same precedence and unary operator flag; this function is called after
recreating an RPN item if the parentheses sub-code is set, and this
function was entered as the recreate function for the close parentheses
code

the popWithParen() was modified with operation precedene and unary
operator pointer arguments that when set returns these values from the
top item on the stack before popping the string

also corrected a bug in the translator checkPendingParen() that should
have been getting the last item from the output list instead of from
the top of the done stack because close parentheses tokens are appended
to the output, but are not push to the done stack; this was necessary
so that the parentheses sub-code can be set on these tokens (extra
close parentheses tokens were being appended to the list)

added expressions with extra parentheses to expression test #2 to test
extra parentheses, and updated the expected translator test results