[Pre-RFC] Expressive integer conversions (`.truncate()` and `.widen()`)

Previous attempts: Implicit widening, polymorphic indexing, and similar ideas https://github.com/rust-lang/rfcs/pull/1218

As a result of these attempts widen() now exists in the standard library as into() and checked_cast() exists as try_into(). Truncating/wrapping conversions still have to use as.