Add safe integral auto-coercions

[View](https://github.com/tommit/rfcs/blob/safe-integral-auto-coercions/active/0000-safe-integral-auto-coercions.md)
Ok, but let's say that `mystery_func()` returns `u64`. Today the compiler would give the error (mismatched types: expected `u32`, found `u64`) on the line: `let y = x + mystery_func();`. If this RFC lands, then the compiler would give the same error on the line: `bar(y);`. I don't see this (the location of the error) as a big issue; after all, you can fix your code by down-casting either `mystery_func()` or `y` to `u32`, so it's not that clear what the best place for the error is anyway.