shell: Keep the filter terms cached

This avoids calling g_strsplit() for every model item when filtering.

https://bugzilla.gnome.org/show_bug.cgi?id=729027
shell: Make search results sorting smarter

Instead of just sorting by the name the sort order will now be:

1. Panels whose name match a search term
2. Panels whose keywords match the most search terms
3. Panels whose description match the most search terms
4. The remaining panels by name

https://bugzilla.gnome.org/show_bug.cgi?id=729027
user-accounts: Don't leak DateTime instances

Before, we were freeing the DateTime instances when closing the dialog
through the close button and always creating new ones on _show().

Now, with the header bar, we go through the delete-event handler which
just hides the dialog, meaning that we leak the dates instanced on
_show().

Clearing the dates on _show() is more robust anyway. Note that we'd
leak even before switching to a header bar when going through the
delete-event handler.

https://bugzilla.gnome.org/show_bug.cgi?id=729181
display: Add "Monitor" to keywords

It's a likely word that might be used when looking for this panel and,
with the new search results ordering, the power panel is coming up
ahead due to it preferring keyword matches when they exist.

https://bugzilla.gnome.org/show_bug.cgi?id=729027
search-provider: Use panel IDs as results instead of tree model paths

Since we now re-sort the model according to the search terms, we can't
use tree model paths as results since they're not stable. Instead
we'll use panel IDs and keep a map of IDs to GtkTreeIters to retrieve
the result metas from the model.

Caching GtkTreeIters in this way is OK because the model is a
GtkListStore which guarantees that while a row exists, the iter is
persistent.

https://bugzilla.gnome.org/show_bug.cgi?id=729027