Fix share key finding algorithm in various cases

Instead of inaccurate pattern matching, use the list of users who we
know have access to the file to build the list of share keys.

This covers the following cases:

- Move/copy files into a subfolder within a share
- Unsharing from a user
- Deleting files directlry / moving share keys to trashbin

Backport of 1e631754d78e98d74ba0d3fb477d5eb815e9dfb3 from master