Fix Chef bootstrap procedure to get correct node permissions

Creating the Chef node from the provisioner resulted in wrong
permissions on the Chef node, which wasn't able to update itself.

Instead, run chef-client with the runlist and attributes in a
first-boot.json file, which will create the node on the Chef server.
Only then run chef-client daemonized.
dict.update doesn't return a dict, it mutates it
Fix broken chef tests