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

Hier wäre es vermutlich schöner, wenn Du `Structureable#descendants` überschreibst, sodass Du dann in dieser Methode nur noch `descendants(true)` aufrufen musst.

```ruby
def descendants(force_reload = false)
  descendant_pages(true) if force_reload && self.respond_to?(:descendant_pages)
  # ...
end
```