Fixed an signed integer overflow check.

Signed integer overflow is undefined behavior in C. In this commit we patch and
signed integer check in ltablib.c in the function unpack.

This patch may need to be modified under the constraints of two operations

    ltablib.c:140
    i = luaL_optint(L, 2, 1)

    ltablib.c:141
    e = luaL_opt(L, luaL_checkint, 3, luaL_len(L, 1)

Here, we assume i and e can be any value in its given type, int. If this is
true, we must check for some special cases. If i is INT_MIN, we can't just take
the negative value of it, as -INT_MIN = INT_MAX+1 (theoretically) which is
undefined behavior.

The original check against the value of

    n = e - i + 1

was

    n <= 0

to check for signed integer overflow. Signed integer overflow is undefined
behavior.