add root/checkedint.h and .c

This is a direct translation of druntime's core.checkedint to C++. The idea is to replace the several ad-hoc overflow checks in dmd with these. Even includes unit tests!
Because with DMC the constants don't have the suffix ULL, so they wind up being the wrong type. So I work around.