[perl #118651] don't overwrite $! in readdir()

POSIX expects readdir() to leave errno alone when it reaches end of
directory without an error so that case can be detected.  Do the same
in perl.
perldelta for ee71f1d151a
[perl #120635] don't leak semaphores

I was calling semctl() with parameters in the incorrect order
[perl #120384] make hash key quoting compatible between perl and XS

In particular:

- if quotekeys is set all hash keys are now quoted, previously the perl
  code didn't quote "safe" numeric keys

- keys of the form ::foo are now quoted by XS as the perl code always did

- XS code quoted "safe" numbers, while the perl code didn't

- perl code didn't quote strings like "1\x{660}", since \x{660}
  matches \d
perldelta for 5b50ddc0fe