More signedness-related code cleanups

These are the remainder of cleanups for Wsign-conversion that
seemed like reasonable improvements on the current situation.
There are still several Wsign-conversion warnings in the codebase
in general.

Most of the remaining ones fall under the broad category of
implicit signed int upconversions from char and uint8_t where math
is being done on the numerical value of a byte.  I'm not yet sure
how or if I want to address those.
Fix sendmmsg() error handling

sendmmsg() results other than "all packets sent" are probably
rare to begin with given our buffer sizing and method of operation
here, but the various other cases weren't being handled correctly.
This could have resulted in unecessarily-dropped packets (which
were capable of being retried) and/or meaningless or confusing
error messages when sendmmsg() sent only some of the requested
packets in the first call or had a hard error.

I might have never noticed this if not for looking through the
signedness issues about the return value and staring at the
updated docs for sendmmsg() as a result.
Move unsigned ceil for scaling out to libgdnsd

This operation in general needs some asserts around it to indicate
that overflow cannot happen and it needs a casted result.  Since
it occurs in 3 places, move this new lengthier version into
libgdnsd.