Fixes for fetch module when connecting to Windows hosts

@abadger made changes in https://github.com/ansible/ansible/commit/f1267c0b053e5975dc08c151530c802015902242 and https://github.com/ansible/ansible/commit/bc4272d2a26e47418c7d588208482d05a34a34cd to shell plugins that weren't applied for PowerShell.

This PR adds PowerShell implementations of the `expand_user` and `checksum` methods.

I also reduced the buffer size for fetching files to 0.5MB; I was getting an IOError with some EC2 Windows hosts when using a 1MB buffer.
In my test below (https://github.com/ansible/ansible/pull/9688/files#diff-f9c7ca43474a10fad9eac81b060d8a95R148) I end up getting the full path because backslashes get used as the path separator instead of forward slashes. If it starts with ~\ I handle it as a special case of a path relative to the home directory, otherwise it is just returned verbatim.