(#1424) Make Struct::Passwd more platform agnostic

The nameservice_spec was failing with `ArgumentError: struct size
differs` on Windows, because the initialize method for Struct::Passwd
takes different sets of arguments depending on flags set when ruby was
compiled, e.g. HAVE_ST_PW_GECOS, HAVE_ST_PW_CHANGE, etc.

This commit modifies the test to create a Struct::Passwd object using
the 4 mandatory fields: name, password, uid, gid. Since the other
optional fields weren't used in the test, this seems like the safest
approach.

This commit also excludes the test that relies on Struct::Group, because
that class only exists if HAVE_GETGRENT is defined at compile time. This
commit skips the test when run on windows.