DSCL User Provider Rewrite

* Dscl user provider changes to support Mac 10.7, 10.8 & 10.9.
* Make the dscl user provider password handling idempotent.
* Refactor / modernize dscl user provider unit tests.
* Functional tests for dscl user provider.


* Fixes https://github.com/opscode/chef/issues/1647
* Fixes https://github.com/opscode/chef/issues/1634
* https://tickets.opscode.com/browse/CHEF-2813

/cc: @opscode/client-engineers, @jaymzh, @juliandunn 
Is the `mac_osx_version_greater_than_10_7?` check here redundant?