Fixed event handling to handle case where we delete/rename pubspec.yaml or cache

Fixed #3018

review: @devoncarew

It may simplify this logic significantly if we just always assume - in workspace.dart - that the `cache` folder should be hidden. isScmPrivate == true. This is a hack, but we really want to more pub away from using this folder anyway. It means that we may end up hiding some user folders named `cache`, but this workaround will hopefully only exist for a few months.