Add ifloor, iceil and itrunc to BigFloat (#3040)

They convert to a Int64 if it fits, otherwise to BigInt.
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.
Merge pull request #3041 from andrioni/master

Adds iceil, ifloor and itrunc to BigFloat