Allow apps to control via a hook to skip adding/removing a file during filescan

Rare environment-specific scenarios exist that can leave either the cache data or file stranded to be deleted when it should be maintained or archived for review.

This PR attempts to provide a tool for an app developer to affect the behavior of the filescan operation so that files and/or data that would otherwise be deleted by the filescan can optionally be retained or moved.

Very basic sample code for use (app.php):
```php
<?php

namespace OCA;

class LostAndFound {
	public function removeFromCache($params) {
		extract($params);
		$removeFromCache = false;
		echo "Not removed: {$file}\n";
	}

	public function addToCache($params) {
		extract($params);
		$addToCache = false;
		echo "Not added: {$file}\n";
	}
}

\OCP\Util::connectHook('Scanner', 'removeFromCache', 'OCA\ScanTest', 'removeFromCache');
\OCP\Util::connectHook('Scanner', 'addToCache', 'OCA\ScanTest', 'addToCache');

```

Intent for use being something like this during a recovery period:
```bash
occ app:enable lost_and_found
occ files:scan --all
occ app:disable lost_and_found
```