Jb/638 speedup horizontal presenter

Caching the horizontal navigation per user.
I moved model methods from presenter to model and there cached them.
The cache is again deleted each time, the user's cache is deleted.

I wrote a spec which shows the equality of cached method and method after creating and invalidating user group memberships.
@jbx26 : Hallo Joachim, hier kann etwas nicht stimmen: In Deinem Cache hängt die `most_special_category` nur vom `@user` ab. Tatsächlich jedoch hängt sie vom aktuell angezeigten Objekt (z.B. dem angezeigten Benutzer-Profil, der angezeigten Seite, etc.) ab.

Das ist aber nicht Dein Fehler, dass das nicht aufgefallen ist. Anscheinend haben wir hier keine Test-Abdeckung. Du kannst es aber auf der Sandbox sehen: Vergleiche mal das Verhalten der Hintergrundfarben der horizontalen Navigation zwischen Production und Sandbox.

![bildschirmfoto 2014-06-25 um 13 53 54](https://cloud.githubusercontent.com/assets/1679688/3384724/6a8976d6-fc5f-11e3-8e8f-4596762da416.png)

Wenn Du Lust hast, guck Dir mal diese Präsentation an, die das Soll-Verhalten der Navigation grafisch darstellt. Dafür könntest Du dann Feature-Tests implementieren; und zwar zunächst in einem separaten Pull-Request, der wieder vom `master` abzweigt, sodass wir zunächst die Tests reinholen können und dann am Cache arbeiten.

Ich habe Dir die [Präsentation in Deine Trello-Karte geladen](https://trello.com/c/BRDrsJdC/625-caching-horizontal-navigation).