add support for freebsd

this PR adds support for freebsd, which handles sysctl a bit differently.  i still need to update the tests and cleanup a few things, but i figured i'd submit this now so you can see the framework i'm using.