Update the argument and return types on function redefinitions.

The argument types were not updated on redefinitions, because
differences were only detected on prototype/header parsing,
but the update was only done after having parsed the full
body.