use Stdlibs Num.{pred,succ} instead of homebrewn

- Int won't overflow
- Will also work for rationals.
fix BatNum.of_float

- do conversion arithethically, not by parsing strings.
- add appropriate test cases.