Added new Windows machine abstraction.

The WindowsMachine class provides a wrapper around the Vagrant builtin Machine class. This was added in order to make unit testing and mocking easier.
ConfigureNetworks cap now uses WindowsMachine
Replaced usages of machine with windows machine in communicator

Added additional comments to WinRMFinder methods and prepended methods with "find_"
WinRMFinder now uses windows machine

Extracted static is_windows? method to WindowsMachine
Added ? to end to is_vmware bool method
Removed inused wql method from communicator
Extracted winrmshell creation to factory class
Moved upload impl to winrmshell and added test
Whitespace cleanup.
No need to change into `manifests_guest_path`, use full path to manifest instead.
Use the Puppet provisioner's `working_directory` option when specified.
Synced up Puppet options, now respects `hiera_config_path` option, passes in `--manifestdir` and `--detailed-exitcodes`.
Merge pull request #108 from jbronn/puppet-options-fixes

Respect Vagrant's Puppet Options
Changed WinRMPortNotDetected to WinRMNotReady
Renamed config_spec to windows_config_spec
Split winrm and windows config tests into separate files

Added unit test descriptor to the winrm config tests so they run with the spec rake task.
Remove unused host and port attributes from error
Fixed issue 104

The WinRM.host config value now overrides the host value returned from the machine's ssh_info(). To enable this the default value for the winrm.host was changed to null since we can lean on the ssh_info[:host] default value and we need to know if the user explicitly set a value in the Vagranfile config.

Added unit tests to cover the winrmfinder host method.
Added Apache2 license, fixed issue 98
Merge pull request #110 from WinRb/fix-issue-98

Added Apache2 license, fixed issue 98