provisioner/chef-solo: properly escape user vars for JSON

/cc @mwhooker - I moved the processing up into Prepare so that any
errors will be shown during a validate pass. Also, I escape some stuff
in keys. Tests moved as well.
Update CHANGELOG