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>
Some clarifying comments.  Here are the situations we might be faced with:

1. Running as root, a cron job resource doesn't specify the `user`.
2. Running as root, a cron job resource specifies `user USER_A`
3. Running as USER_A, a cron job resource specifies `user USER_A`
4. Running as USER_A, a cron job resource specifies `user USER_B`
5. Running as USER_A, a cron job resource does not specify a user.

(1) and (2) already work, modulo other errors.  For the others, I think

- (3) does not work and should.  
- (4) should probably be left up to the cron implementation and system state as to whether it works.  Run crontab -u USER_B.  If `crontab` fails, then we fail.
- (5) is a bit up for debate.  With the current default of `user root`, this is essentially just a special case of (4).  We could change the default user to be "user running chef-client", but that would be a behavior change.  I think for now, it makes sense to treat this just like (4).