(Work in Progress) (FACT 614) Add structured operatingsystem fact

The first of these commits adds the 'os' structured fact, which incorporates all operatingsystem-related facts into a nested hash. Includes keys for the equivalents of operatingsystem, osfamily, operatingsystemrelease, operatingsystemmajrelease, and the six lsb facts for Linux systems.

The second commit refactors the previously mentioned existing flat facts to resolve by using values from the new 'os' structured fact. This ensures that these facts will stay in sync with the new fact, while also maintaining backwards compatibility.
If `Facter.value("os")["family"]` is nil, then the fact will be resolved to nil, so we don't need to explicitly check for this. If we had to retrieve a value from `Facter.value("os")["family"]` or do some sort of computation on it then we would need to check if it was nil before using it but if we're just returning it as-is the confine isn't strictly necessary.