Subnet types

This includes two things:
1) replace the initial subnet types list with a fuller list, and related refactoring
2) the first iteration of the NetworkQuery API/helper class for grabbing interfaces, etc for hosts in the context of a particular subnet type.

1) is largely done here; 2) will need more work, but that could be done either as part of this PR, or as a follow-on PR after merging this one, since it's not referenced anywhere yet.
Ok I'm returning host for primary interface right now. I added a FIXME comment, so we can refactor this once we decide on returning a hash vs. a Staypuft::Interface object, or something else so we can return the same type of data for primary vs. other interfaces.