Added a check for implicit casts that change meaning.

E.g:

cast<uint8_t>(x) % 256

now errors, instead of converting to

cast<uint8_t>(x) % 0