Fix tail for windows os

We had to add the FILE_SHARE_DELETE flag when opening a file in go.
This is a workaround for this issue: https://codereview.appspot.com/8203043/
Linux and windows code has to be split into 2 separate files.


this pull request is ready to be merged except for this one little concern i have. why incorrectly notify permissions errors as "file deleted" (`changes.NotifyDeleted`) instead of letting it reach the subsequent `util.Fatal`?

i understand that there is a comment `// XXX: report this error back to the u` indicating the shortcoming of this scenario - but is this change of `|| os.IsPermission(err)` really *necessary* for this PR?