provisioners/chef: DRY and unify encrypted data bag secret handling

Pull up encrypted data bag secret management into the base classes, thus
also unifying the functionality.

Especially this complements the issues:
  * Upload the secret to provisioning path also with chef-solo [GH-1246]
  * Delete the secret also with chef-client [GH-2712]
  * Remove the secret before uploading also with chef-client [GH-1111]
provisioners/chef: set `encrypted_data_bag_secret` to `nil` if it's not uploaded

/cc @shanegibbs

Fixes #2984
Merge pull request #2845 from tmatilai/chef_data_bag_secret

provisioners/chef: DRY and unify encrypted data bag secret handling