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.
Note -- the sh.py version of this does not handle multiple path elements.  The calling function must have reduced it to a single directory/filename.  So when the calling function gives you good values they'd be "~" or "~username".  If the calling function were to give the sh.py module any other value it will return a command that will return the string itself.

I don't know if that matters since your comment says that powershell already differs due to not being able to handle ~username but thought I'd mention it.