hv.c: add some NULL check removal

The purpose is less machine instructions/faster code.

* S_hv_free_ent_ret() is always called with entry non-null: so change its
  signature to reflect this, and remove a null check;

* Add some SvREFCNT_dec_NNs;

* In hv_clear(), refactor the code slightly to only do a SvREFCNT_dec_NN
within the branch where its already been determined that the arg is
non-null; also, use the _nocontext variant of Perl_croak() to save
a push instruction in threaded perls.