(PUP-2866) Read UID_MIN from login.defs instead of hardcoding value.

This change reads UID_MIN from /etc/login.defs, if present, for the
minimum non-system user id instead of simply hardcoding a value.  If the
file isn't present or UID_MIN isn't specified, we fall back to 1000 for
BSD family operating systems and 500 for all other operating systems.
This seems like a code smell to me. Is it better to expose a `.reset!` method on the class or use `instance_variable_set`?