Fix: correct reimplementation of BatInt.Safe_int.mul

The algorithm is described in the Cert C Coding Standard:
https://www.securecoding.cert.org/confluence/display/seccode/INT32-C.+Ensure+that+operations+on+signed+integers+do+not+result+in+overflow
Testsuite updated