add core.checkedint

There's been a lot of interest, both in D and other languages, in detecting integer arithmetic overflows. Because of performance and other issues, it is unlikely such checking will be added to the core D integral types.

This adds primitives which can be used to do checked integral operations, i.e. operations that check for overflow.

A checked integer type would be a Phobos library type that builds on these primitives.
I guess I don't understand this. To me, using `ref` indicates you want to pass in a value that will be read by the function and possibly changed as well.