Cache search index for Find dialogs

* pull search implementation out of MatchingObjectsBrowser into a
SearchEngine class
* cache SearchEngine object in property table
* implement SearchEngine so search occurs asynchronously
* start indexing asynchronously when dialog is first opened
* fix sorting of results

Change-Id: Ib49e28b2a3d221e3d62e846b058bed25c43a2112