Implemented salt.modules.file.* and salt.states.file.symlink for Windows

This PR should bring `salt.modules.file.*` to parity with the Unix version, where possible (e.g. `salt.modules.file.sed` doesn't exist on Windows). It should also enable the `file.managed` and `file.symlink` states to work properly, fixing #10095 and #9379.

To make this happen, there were some changes in the core `salt.states.file` module, so it'd be much appreciated if someone could cast their eyes over that bit in particular and make sure I haven't broken anything.

There is also a new doc under the `windows` directory that details the decisions I made to implement Windows support. This has implications on how Salt will interact with Windows and also its future Windows roadmap, so a core dev should have a look at that.

I've tested this manually using Windows Server 2008 R2 and CentOS 6.4 x86_64 and it seems to work. (I'd add tests but I'm not sure what the method is in Salt to test file system changes.)