(CFACT-64) Add structured operating system fact

This commit adds a new 'os' structured fact, which returns a map
including keys for each of the operatingsystem-releated facts. The
fact also includes LSB keys in Linux systems where LSB is available.


Note: I'm putting this PR up in order to collect feedback on how we should resolve the OS structured facts. The code in its current state is complete, and the fact is functional, but I'm not sure how I feel about its resolution. I've added `determine_*` helper functions to actually interrogate the system, while the `resolve_operating_system*` functions are still of type void and actually add the facts as collected from the structured operating system fact. 

The structured fact uses the helper functions to gather its data, and simply takes values from the LSB facts. This approach feels inconsistent, but it didn't feel right to just bring the LSB implementations over into the operating system resolvers.

TL;DR, I'm open for thoughts and feedback on the best way to organize this structuring!
:+1:  Absolutely, and I'm definitely on board with that change. I was learning a lot about naming as I was going along with these structured facts, so there's certainly lots of room for improvement :).

In fact, adding the lsb facts into the os structured facts may not have even been the best thing to do, as they could have been their own separate structured fact. Maybe that's an idea as well?