This uses the more common convention where the variable freed is the
thing returned from the constructor directly, rather than having the
deallocator also zero out the pointer itself.
There is no need to for an initialization function if the builtin
structs if the comparison function will look at label_buf directly
when label == NULL.
This simplifies the API for users, who now don't have to worry about
library initialization and deinitialization functions (these sort of
functions can cause headaches in chained library loads, esp. in plugin
architectures like PAM).
In general, we don't want libraries to send data to the standard file
descriptors. There are more that need fixing.
Note: this introduces a new API (psl_suffix_count() and
psl_suffix_exception_count) to enable the same sort of output from the
test. But this new API seems to imply the internal structure of the
public suffix list.
Do we want to expose this API? There could be some other PSL
mechanism (e.g. DBOUND) that doesn't have these counts, and a drop-in
replacement would not know what to return here.