Improve behavior of IP::toUnsigned on Windows

On Windows (and 32-bit systems), pow( 2, 32 ) - 1 is a float, which makes
IP::toUnsigned return a float sometimes (instead of string, int, or false,
as is specified in the documentation).

This makes problems for some callers (e.g. I0c9a4ae7 had to modify
wfBaseConvert because of this, while I believe this change would have made
that change unnecessary).

So to improve that, and make the result correspond to the documentation,
we ensure floats are converted to strings.

Plus, more phpunit coverage of IP::toUnsigned and the related IP::toHex.

Change-Id: Ic8e4d9c65497e78960b03555eab0558a6af7d8d2
Merge "Improve behavior of IP::toUnsigned on Windows"