search: Don't bother clearing the result display twice

It's just extra work, and breaks our hide/show hack to prevent the
flashing on search results.
search: Merge SearchSystem with SearchResults

The complexities of tracking these two things separately, with the
display on one half, and the searching on the other half, is difficult
to manage. Squash it all together.
search: Track search status more accurately

Keep a flag depending on whether a provider is in-flight, and use that
to determine what status label to show.

This ensures that we only show "No Results" when we're done searching
and we're sure that all providers have returned results back to us.
search: Move the timeout for searching into setTerms

This lets us considerably clean up the event flow here and change how
things are structured. It also makes sure that we never show "No
Results" -- search.js not being aware of the timeout means that it might
not think that any work was being done when we show the page.