(maint) Add a wrapper over ioctl
(CFACT-86) Networking facts for solaris

This patch adds support for networking facts for solaris. This is patterned on
the bsd facts, but differs in that the method of getting the interfaces and
macaddress is different. Unlike bsd and linux, getifaddrs does not exist in
s10. Hence we rely on ioctl to allocate a block of addresses which provides us
with ipv4 and ipv6 interfaces. However, linkaddresses are not present in this
block, and have to be obtained separately.
This patch also adds support for dhcp server id to the networking resolver.

We also refactor multiple calls to ioctl system call to a separate
struct. This allows us to simplify error handling, socket creation and
destruction.