math: erf and erfc cleanup

common part of erf and erfc was put in a separate function which
saved some space and the new code is using unsigned arithmetics

erfcf had a bug: for some inputs in [7.95,8] the result had
more than 60ulp error: in expf(-z*z - 0.5625f) the argument
must be exact but not enough lowbits of z were zeroed,
-SET_FLOAT_WORD(z, ix&0xfffff000);
+SET_FLOAT_WORD(z, ix&0xffffe000);
fixed the issue
check for invalid handles in dlsym/dlclose

this is wasteful and useless from a standpoint of sane programs, but
it is required by the standard, and the current requirements were
upheld with the closure of Austin Group issue #639:
http://austingroupbugs.net/view.php?id=639
fix another case of cloexec/nonblock flags not matching arch values
add missing protocol families to sys/socket.h

missing protocol families based on current linux headers:
PF_RDS, PF_LLC, PF_CAN, PF_TIPC, PF_NFC
add missing multicast socket options to netinet/in.h

based on linux headers add the missing MCAST_* options
under _GNU_SOURCE as they are not in the reserved namespace
(this api was originally specified by RFC 3678)
add missing ptrace requests and options to sys/ptrace.h
add missing EHWPOISON to bits/errno.h

it was already defined for mips, but was missing from other archs
add missing F_GETOWNER_UIDS flag to bits/fcntl.h
add missing EXTPROC flag to bits/termios.h

mips and powerpc already had this termios flag defined
add missing mmap options and madvices to bits/mman.h based on linux headers
add RB_SW_SUSPEND and RB_KEXEC to sys/reboot.h

using the glibc names for the magic constants of the linux reboot syscall
add EPOLLWAKEUP flag to sys/epoll.h
add IN_EXCL_UNLINK to sys/inotify.h
add mount flags to sys/mount.h

added various MS_*, MNT_*, UMOUNT_* flags following the linux
headers, with one exception: MS_NOUSER is defined as (1U<<31)
instead of (1<<31) which invokes undefined behaviour

the S_* flags were removed following glibc
add SWAP_FLAG_DISCARD to sys/swap.h
add MOD_TAI to sys/timex.h and update STA_RONLY
fix lio_listio return value in LIO_WAIT mode
crypt: fix the prototype of md5_sum, sha256_sum and sha512_sum

the internal sha2 hash sum functions had incorrect array size
in the prototype for the message digest argument, fixed by
using pointer so it is not misleading
in crypt_des change unnecessary union keybuf into unsigned char[]

original FreeSec code accessed keybuf as uint32* and uint8* as well
(incorrectly), this got fixed with an union, but then it seems the
uint32* access is no longer needed so the code can be simplified
regex: remove an unused local variable from regexec

pos_start local variable is not used in tre_tnfa_run_backtrack