Return empty result list for category searches without matches
A /search request using the [key=value] category syntax together with a
near-phrase crashed with a 500 error whenever the search legitimately
found nothing.
Two places in ForwardGeocoder.lookup_pois() indexed into an empty list:
* sort_and_cut_results() accessed results[0] without checking that any
results were found. The guard was lost in
87a8c246.
* execute_searches() accessed searches[0] when the near-phrase produced
no search interpretations at all. lookup_pois() guarded this with
'if query', which is always true because QueryStruct has no __bool__.
Use 'if searches' instead, as lookup() already does.
Fixes #4148