correct conversion of MIN_SMALL numeral to fixnum

Conversion of MIN_SMALL as a numeral to an Erlang integer, via binary_to_integer/1 or list_to_integer/1, succeeds but creates the integer as a negative bignum.  This is incorrect as (a) the value fits in a fixnum, and (b) the VM expects values that fit in fixnums to also be fixnums.  The bug is that the numeral is converted first as a non-negative number, and then finally negated if prefixed by a unary minus sign.  MIN_SMALL without the sign is MAX_SMALL+1, which doesn't fit in a fixnum, so the value before the negation is a bignum.  To correct the representation after the negation call big_plus_small with zero, as already done in other places.

Tested with the emulator testsuite on Linux/x86_64, no regressions.
Couldn't instead the `if (is_big(res))` test a few lines above be moved after the `if (neg)` block?