Extend osName and osVersion to work on various systems

Another implementation to fix #4. This separates `osName` and `osVersion` into each system's own files and doesn't have `uname` command dependency.