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.
@quickfur Now I see, thanks.

@klickverbot Yes, I know the difference between `ref` and `out`. I just didn't realize why it was useful to have `ref` in this case. The explanation by @quickfur made it clear.