Replace (private) _checknull with (public) is_nan
`util._checknull(x)` is equivalent to `x is None or isnan(x)`.  On several occasions I have had to go remind myself what `_checknull` covers.  It is much clearer to write out `x is None or util.is_nan(x)`, which is what this PR does.

In at least one place where `_checknull` is currently used, the `is None` part of it can be skipped.

Also gets rid of usages of private functions, and trades a no-docstring func for a nice-docstring func.

Small assorted cleanups along the way.

