Change ifloor/iceil/itrunc to always return a BigInt
Add typed versions of ifloor, iceil and itrunc

It also includes extensive changes to the conversion of both BigInt
and BigFloat in order to make them more general and to start raising
errors when trying to convert values bigger than Clong/Culong.