Implement per-user caching for TreeView results.

Because currently TreeView calculates the entire NavTree on every request we need to cache these results.

See https://github.com/4teamwork/opengever.core/pull/242 for the corresponding part in `opengever.core` that does cache invalidation.