Pull zcertstore use zhash

The zcertstore primarily uses the public key to locate a certificate and doesn't use the doubly linked portion of a zring. Only the print functions use zring_first/zring_next to iterate over all certificates. But zhash has those too. Changing the internal storage to zhash only changes the order in which certificates are printed (to random) while is was never well defined to begin with.

Note: This also fixes a null pointer access in zhash_destroy if self->items failed to get allocated in zhash_new.