User provider does not update user when uid/gid are strings

Fixes [CHEF-4200]. If the user provider was sent UID as a string,
comparing to the already-created user would always think that the
user had changed.
Use string comparison of user :uid/:gid

String comparison is slightly safer than integer comparison
in cases where :uid/:gid are nil or empty.
[CHEF-4200] Replace Array#keep_if with #select

Array#keep_if was introduced in Ruby 1.9; Array#select
is backwards compatible with 1.8