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`.

Ja, gute Idee. Leider wurde genau diese Methode in has_dag_links vergessen. Die Methode `#descendants` ist übrigens tatsächlich lediglich ein Join auf die Methode `#descendant_tablenames` von jeder Tabelle. Die einzelnen Methoden `#descendant_tablenames` sind übrigens mit Parameter `force_reload` versehen.