FIX: Correct arithmetic operations

Fixis issues found in the discussion of #240:
Arithmetic operations are now done in their native datatype and only
casted if an overflow happens. This leads to better precision in results.
Also, hex strings are now allowed to have a sign (+ or -) if (and only if) they are
used in arithmetic operations.
The code doesn't really match the comment here, if I'm not mistaken. Try e.g. `0 - "4294967296"`. As the comment/spec suggests, this should try to convert the right operand to int and fail, but then succeed at converting it to a long. Currently this just throws `Operation [System.Int32] - [System.String] is not defined` instead.