[CHEF-3858] rescue bad json errors and re-raise as decryption failures
Merge branch 'CHEF-3858-2'
[CHEF-3858] ensure invalid key always fails to decrypt

In Ci, we occasionally see test failures when decryption with an
incorrect key does not raise an error, but instead returns garbage.

This fixes that issue by adding an HMAC-SHA2-256 of the encrypted data
to the version 1 format. For backwards compatibility, decryption will
continue if the hmac is missing; therefore, this does not increase the
security of encrypted data bag items.
[CHEF-3615] version 2 encryptor/decryptor for EDBIs

Authenticated encryption data bag items will be version 2 of the
encrypted data bag item format instead of tacked on to the version 1
format.

Authenticated encryption via OpenSSL cipher was considered, but older
openssl versions do not have, e.g., aes-256-gcm, so we are implementing
encrypt-then-mac with hmac-sha256 on top of existing aes cipher.

Code passes tests but is not yet exposed in configuration. TODO:
* Allow user to set desired version for encrypt.
* Allow user to set minimum required version for decrypt. Without this
  change, a MITM could simply change the format version to 1 to bypass
  the hmac.
[CHEF-3615] Make encrypted data bag format configurable

* Add an option to configure the version used when encrypting data bag
  items. This allows users to opt-in to newer encrypted data bag formats
  while the default remains compatible with earlier chef versions.
* Add an option to set a minimum valid encrypted data bag item format.
  This is useful on the client so that, for example, a MITM attacker
  cannot downgrade a v2 EDBI to v1.
Merge branch 'CHEF-3615'
[CHEF-4157] split Platform to prune dep graph

Many files/classes depend on Chef::Platform just to use the `windows?`
method. The part of Chef::Platform that maps providers to platforms has
very heavy dependencies (which may trigger circular deps when loading
some files) which are not needed for most users of Chef::Platform.
[CHEF-4157] remove all implementation from chef/platform
Merge branch 'CHEF-4157'
Version library fixes for Win2k3 non-existent GetProductInfo API, misplaced GetSystemMetrics API calls, irregular characters in Win2k3, Win2k8 WMI test validation
Service manager tests move to optional as short-term CI reliability improvement
Add more explanation in test comments on OS idiosyncrasies around OS version information
Merge pull request #752 from opscode/adamed/ci-failure-windows

Windows versions library and service_manager test reliability issues across versions of Windows