Generic and BSD (FreeBSD + Mac) network support in setup

There are 2 sets of changes in here...

The first (2 commits) is a generic network data grab, used if there is nothing better, using
netifaces module (http://alastairs-place.net/projects/netifaces/)
Its very limited, and obviously only works where that module is installed, but gives
you something to work with

The later commits puts in a generic BSD network module, parsing data out of ifconfig.
There are 2 OS specific sub-classes (FreeBSD and Darwin) - except they currently have
no actual changes in those.
Additionally there is a itersubclasses function taken from http://code.activestate.com/recipes/576949-find-all-subclasses-of-a-given-class/
to allow the __new__ code to descend through additional subclassing.