Added WinRM elevated shell wrapper script

This script creates an immediately run scheduled task using fresh credentials. This is a generic implementation used by the Chef provisioners. The script gets around several limitations in WinRM.

1. Credential hopping
2. The non-default Administrator account sometimes doesn't have true Administrator access when run through WinRM even with UAC disabled.

In short, this script allows commands to run through WinRM just as if they were run directly on the box.
Don't use interpolated strings for username and password

Its possible that usernames and passwords may contain special characters like $
Allow WinRM commands to be run elevated via scheduled task
Use new Ruby hash initializer syntax
First pass at integrating new WinRM elevated execution wrapper

- Removed a lot of the Windows special casing from Chef runs
- Don't attempt to use @config.binary_env since we don't properly pass this along to Chef
Chef provisioner should utilize reboot capability
Removed old unused WinRM chef provisioner scripts
Fixed bug in CommandBuilderWindows

CommandBuilderWindows would not include the Chef binary in the command when the binary_path was specified in the config.

Backfilled unit tests for CommandBuilderWindows
DRY'd up Chef command building

There's very little difference between the command building on Linux and Windows other than path formatting. All Chef provisioners support the --no-color argument now.

Added unit tests to verify changes.
Merge pull request #3554 from mitchellh/chef-provisioner-cleanup

provisioner/chef: Chef provisioner cleanup with Windows