Make cron provider work when Chef is run as non-root user.

Also, move it onto Chef::Mixin::ShellOut.

Signed-off-by: Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>
This would be easier done by changing the `@new_resource.user` default value to 'nil' and the only conditionally including the `-u` flag if this is not nil.  Then you can completely drop the work of calling getpwuid.  And if the user is non-root and you use the `-u` flag then you can just let crontab fail, you don't even need to worry about this `root?` check at all.  And do we need the special casing of Chef::Platform.windows? at all?  Shouldn't we add a `provides cron, os: "!windows"` to this file?