(CFACT-86) Networking facts for solaris

This patch adds support for networking facts for solaris. This is patterned on
the bsd networking resolver. 

My first reaction is it seems complex for what's going on; you're separating error checking and the operations being performed from where the handle is created. Can the descriptor be anything besides a handle returned by a socket call?

What I see you doing is establishing a pattern where we validate a handle on construction (the handle can be created in the call to the constructor), then have an apply method that does a predefined operation (so it's simple to do the same operation multiple times). The advantage is any error checking doesn't have to be written multiple times, and on error we throw an exception that's caught.

That could be appropriate in more cases, as we make system calls all over the place. I'm working on a proposal to make it a generic class that we specialize for each system call. If my solution seems opaque, then I don't think we should have this as a special case.

In other words, this pattern isn't unique, but your solution is within our code base. I'd like us to either use it more generally, or not use it at all.