Refactor operatingsystem fact structure

The operatingsystem fact on Linux had all possible fact resolutions expressed in a single location. This makes testing and reasoning about the fact somewhat frail, as it implies ordering that might or might not be there.

This commit extracts common behavior of detecting redhat and suse variants based on file contents, and behavior around detecting the operating system based on the presence of a file.