(CFACT-124, CFACT-76) Refactor resolver implementation so that Windows can share base types.

This set of commits refactors the resolvers across all platforms into a base type that is responsible for adding facts.  The child types now are only responsible for returning data to the base type to populate the facts.

A few new structured facts are added with these changes, including the "networking" and "ssh" facts.

Additionally, the "lsb" structured fact under the "os" has been renamed to "distro" and the redundancy in attribute names has been removed.
I think I'll just merge this one with the "block devices" structure fact which this PR is adding and make that fact a little more generic sounding, like "disks".  Also, we don't need a disk and disks fact.  If people want the list of disks, they can use the `keys` and `flatten` functions from puppet's stdlib or the corresponding ruby logic.