[CHEF-4204] Fix issues with shell-significant characters in useradd commands

- Fixes CHEF-4204 http://tickets.opscode.com/browse/CHEF-4204
- Adds additional functional tests for user resources on systems that use `useradd` (requires root to run)
- Converts the Useradd provider to `shell_out!` from `run_command` and `popen4`
- Passes `useradd` and related commands to `shell_out!` as argv Array rather than string to avoid issues with shell interpretation of characters such as single-quotes
- Moves duplicated useradd/solaris user provider test code into a shared example group