Fix signed integer overflows

Signed integer overflow is undefined behavior in C.  Many compilers assume no signed integer overflows and even optimize away overflow checks.  The `-fno-strict-overflow` flag works around this issue in gcc, but doesn't fix the fundamentally broken code.

This patchset fixes signed integer overflows in `time.c`, `ossl.c`, and `bigdecimal.c`.