Improves kv_free() internals and usages. Simplifies through memset(0)ing
the struct and remove checking for NULL before free(), once free(NULL)
is ok, also never set/get or alloc/release rule_kv[0], which enable the
removal of checking for non KEY_TYPE_NONE keys on kv_free() before
action.

Shared with fellow OpenBSD developers back in September, no objections.
Regress tests ok.