Reuse icons in the app grid when possible

Quoting the first commit:

The views (AllView and FrequentView) build a list of all applications
they contain. BaseView then diffs between what's currently added, and
what needs to be added, and removed.

This approach has a problem though: creating an AppIcon or a FolderIcon
connects to various signals, and we confuse the garbage collector.

When building the list of applications, instead of always creating new
icons, try to use already existing icons first.

Fixes #1610
Fixes #1694
Edited by Georges Basile Stavracas Neto

Merge request reports