Having internal and external integer types being different hides potential conversion problems. Propagate that out further (which will also allow us to better optimize conversion).