Client filesystem events

merge #285 first (that's the source of 6da592e) which doesn't belong in this commit