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 
This method is getting a little long. Overall, I think I'd be in favor of extracting the dscl stuff to its own class, and then you could use DI to make the provider tests a lot cleaner. But that's probably a fair chunk of work that we don't need to take on right now. So maybe just move this chunk into a private method?