[io-layer] Correctly implement permission checking for File.Move. Fixes #17009.

The old check was simply for open sharing status, which is incorrect. The right
thing to do is to check for FileShare.Delete and not FileAccess.
[corlib] Add an exhaustive regression test for file sharing and File.Move.