CHEF-3582: Fix #check_lock under why-run

We assume in whyrun mode that a non-existant user would be created before we
attempt to lock it, so we return false from #check_lock when user does not
exist and we are in why_run mode.

Conflicts:
	chef/lib/chef/provider/user/useradd.rb
added the initial command for checking environment cookbook contraints.
renaming to compare and braking the code up into some functions and added unit test, also added the -m mismatch option.
removing some comments and it seems I really cannot type the word constraints correctly. Or I should just drink less beer when coding..
Merge branch 'CHEF-4093' into contributions
[CHEF-4363] Allow adding event_handlers via config file
[CHEF-4363] Remove unnecessary restoration of Chef::Config