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
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