Add support for user locking/unlocking in SmartOS

Account locking in Illumos is done through the passwd command, but with
different options that on Linux.

-s check state
-l lock user
-u unlock user

This commit also refactors the other user providers to more modern
chef syntax using :shell_out and :shell_out!, as well as moving the
:check_lock method to a more ruby-ish :locked?

[fixes CHEF-4201]