Jdmundrawala/windows env path

Fixes issues: 
https://github.com/opscode/chef/issues/2016 
https://github.com/opscode/chef/issues/2009

Includes changes from/Should replace:
https://github.com/opscode/chef/pull/1876
This uses the windows api instead of find/replace and I've added functional tests
According to [MSDN](http://msdn.microsoft.com/en-us/library/windows/desktop/ms724265(v=vs.85).aspx) ExpandEnvironmentStrings returns 0 on failure.

```
result = Chef::ReservedNames::Win32::API::System::ExpandEnvironmentStringsA(path, buf, buf.length)
if result == 0
  Chef::ReservedNames::Win32::Error.raise!
end
```