core: MachineIndex stores the box associated with a machine when ID is set
core: Store the actual box data, not just the name
core: MachineIndex::Entry#valid? method and tests
core: Environment#action_runner sets machine_index
commands/box/remove: if box is in use, warn user, ask for confirmation
commands/box/remove: add --force flag
commands/global-status: call proper method
Fix some tests
core: environment_loaded doesn't load full env
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