Fixes for usermod

This is two things. 

First, if you send uid as a String into the user provider, chef would think the user was different every chef run and execute usermod every time. This sucks, because if you're logged in as a user managed by chef and it runs usermod on you, the command will ASPLODE with a big fat exitstatus of 8. Suck! I'm going to send a better fix into chef master, but in the meantime patching it in this bookcook is extremely convenient.

Also, in chef master smartos is changed to run Chef::Provider::User::Solaris instead of Useradd. I'm adding a class with fixes to user locking/unlocking in preparation for that, though hopefully I'll get it fixed in master before the next release.