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 
Technically yes. We only need to check for salt and iterations incase you've specified salted_sha512_pbkdf2 password. 

However since this only applies to 10.8 and above, I'd like to keep this in order to be more explicit.