WIP: Base.checked_{add,sub,mul} and overflow-safe parseint

We've had the intrinsics for checked arithmetic for a rather long time, we just haven't used it anywhere. This defines checked `+`, `-` and `*` the same way that we define `+`, `-` and `*` and uses it in parseint to prevent overflow when attempting to parse a too-large value.

This is still a work-in-progress because it has some issues:

- [x] it doesn't work for `typemin(Int)`
- [x] it doesn't work for "small" integer types like `Int8` or `Uint8`
- [x] it needs tests