Wrap recvmsg() and sendmsg()

This introduces two new functions:

int socket_recvmsg(resource $socket, array &$msghdr, int $flags)
int socket_sendmsg(resource $socket, array $msghdr, int $flags)

The arrays representing struct msghdr follow the native counterpart
closely: structs are mapped to arrays, fields to array elements whose
key is the name of the field without the prefix (e.g. "name" instead
of "msg_name") and array are mapped to sequential numeric PHP arrays.

Right now the only type of ancillary data supported is fot the
level/type pair IPPROTO_IPV6/IPV6_PKTINFO.

I also refactored out the name resolution functions and made
sockets_strerror() a global function.
Add test for recvmsg()
Add IPV6_UNICAST_HOPS option constant.
Fix bug converting zval sockaddr

The bug ocurred when the family was not specified but was instead guessed.
Fix bug in from_zval_write_control_array()
Support for IPV6_HOPLIMIT and IPV6_TCLASS
Add test and slightly tweak another
Added missing return statements
Improve imported socket family detection

Also added constant SO_FAMILY.
Redactor to expose socket_import_file_descriptor()
Added support for AF_UNIX messages

Added constants: SCM_RIGHTS, SCM_CREDENTIALS and SO_PASSCRED.

The function socket_cmsg_space() was modified to support message types with
variable size. Its new signature is:
int socket_cmsg_space(int $level, int $type, int $n)
where $n is the number of repetable elements that the message is composed of.
Add test for CMSG_CREDENTIALS message
Add test for CMSG_RIGHTS
Register extra MSG_* constants
Fix build on Mac OS X

By deactivating unsupported features on this OS.
Check return of fstat()
Fix mcast_ipv6_send test
Move some multicast stuff to multicast.c
Destroy ancillary registry on shutdown
Rename some functions for consistency