Support fetching dnsruby via OS package (or not at all), sanity check nil interfaces

Supporting DNS names in rules is a cool feature, but the dnsruby gem can be an annoying external dependency. For example, most of my systems have default-deny outbound firewalls with very few exceptions. I added the ruby_source attribute to describe how to grab dnsruby (and potential other future gems). It defaults to "gempackage," but you can set it to "package" to use the OS's native package capabilities, or "none" to skip installing it altogether. The new dnsruby_package_name attribute is set appropriately according to platform.

I don't remember the circumstances, but I ran into a nil object error in compile_and_store_rules a while ago. I added an explicit check which fixed the problem.