Added WQL support to Vagrant communicator execute

- Removed duplication for WQL specific commands
Windows GuestNetwork directly uses the communicator

- Fixed slight Law of Demeter violation
- Make guest access through comm consistent
Cleaner DHCP detection for Windows guests
Added guest network tests for Windows guests
Merge pull request #3517 from mitchellh/communicator-support-for-wql

communicator/winrm: Communicator support for wql
Fixed Windows test code style to use more elegant tap method
Fixed Windows tests to use modern Ruby hash style
Added WinRM command filters

These will be used to replace the guest side command_alias script that is sent with every communicator execute call. This avoids some uncessary remote calls to the guest, makes it unit testable, and allows larger PowerShell commands to be invoked.
Allow WinRM shell test less restrictive

This will allow the shell class to append additional commands like exit $EXITCODE
test command should expand environment variables

'$Env:SystemRoot' does not expand
"$Env:SystemRoot" does expand
Added WinRM grep command filter

This is needed because isn't available on Windows and Vagrant guest detection attempts to use grep for some OSs.
Integrated WinRM command filter into communicator

*nix commands are now filtered out instead of being sent to the guest. This means the command_alias PowerShell script is no longer needed.

Moved the PowerShell exit code helper to the WinRM shell and changed it to always return an exit code.
Refactored WinRM test command filter
Merge pull request #3527 from mitchellh/windows-unit-test-code-review-feedback

Windows unit test code review feedback
Extract execution_output method from WinRM comm execute
Merge pull request #3530 from mitchellh/linux-command-filters-for-winrm-communicator

communicator/winrm: command filters for winrm communicator