BUG: Make nansum work with booleans.

This broke when function_base._nannop tried to fill a boolean array with
integer zeros, raising a 'safe_casting' error. It looks like nanargmax
and nanargmin would also break, and were probably incorrect for booleans
in any case. The fix is not to use fill values for numpy dtypes that are
not inexact as they cannot have nan values. Previously that was only
done for integer types.