Adding support for Solaris

FWIW, I'm merging these into a branch locally to make sure their aren't conflicts.