(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.
Failing to document a namespace actually doesn't end up in even a warning from doxygen.  No worries if we haven't been following them.  There's probably no good reason to have this degree of namespace granularity.