Add sign_cast functions
Add sign_cast functions

These safely cast between signed and unsigned numeric quantities,
aborting if the result cannot be safely converted (as opposed to size
expanding or throwing).

gim/libgim,gim/libgim,gim/libgim