Reduce duplication in WinRMShell

Also, ensured the execute_shell method would throw a proper WinRMInvalidShell exception if passed an invalid shell type.
Fixed issue 106

WinRMCommunicator execute method now properly respects the error_check options argument. If this is true an exception will be thrown, which is what core Vagrant expects.
Merge pull request #114 from WinRb/fix-issue-106

Fix issue 106