(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.
Is this something we should do on each platform? I don't think I followed this convention on Windows.