io.sockets.secure: new hook variable ssl-certificate-verification-supported?

t if the backend is able to verify certificates, f
otherwise. Currently certificate validation isn't implemented on Windows
io.files.windows: new generic words drain and refill, like in io.backend.unix

The purpose of these words is to abstract out the pushing of the bytes
to the ports so that you can insert the ssl layer in between. Exactly
like how drain and refill are specialized on ssl-handle in
io.sockets.secure.unix.
io.sockets.secure.windows: reading and writing from ssl sockets

Unified the drain and refill generics and put their definition in
io.files. They are now used by both the windows and unix ssl backend
for io. Windows ssl kind of works now, but the error cases are not
implemented correctly.
libc.*, unix.*: move constants and functions from the unix namespace to libc

The E* errno and SIG* constants are defined on Windows too, so they
should be in the libc vocab which is available there. They will be
used for SSL error handling.
io.sockets.secure.*: unification of lots of platform-independent code

Code that is duplicated in the backends moved to
io.sockets.secure.openssl. The wait-for-fd verb used by do-ssl-accept
doesn't have any equivalent on Windows so that needs to be
implemented.
io.files: make wait-for-fd generic and dispatch depending on backend

do-ssl-accept need to call wait-for-fd so it needs to be generic. On
windows it's a noop but on unix it will wait for the fd.
libc: several vocabs now need to depend on libc
libc.*: add platform files
libc: fix vocab definition of platform dependent parts of libc