Jb/638 cache descendants

Beim Löschen eines 'DagLink` sollte auch der Cache von `ancestor` und `descendant` gelöscht werden.

Die Methode `#descendants` liefert erst nach einem `#reload` das korrekte Ergebnis.

Alle Verwendungsstellen von `#descendants` wurden durch `#cached_descendants` ersetzt.

Die Methode `#cached_descendants` ist besser, weil sie intern ein `descendant_pages(true)` und `descendant_groups(true)` aufruft. Jede Klasse, die is_structureable ist, hat mindestens `Group` oder `Page` als `ancestor_class_name`.