Make search more like an extension of Matcher.

Gave Search the ability to replace matches, gave both of them a sensible API
for showing "what you're searching for" to the user.
First pass at query-replace implementation.

Also tidied up replaceAll (via Search) and made it report replacement count.

I still need to highlight the current replacement as the query-replace
proceeds, and also (re)implement the "down in the status line minibuffer"
because query-replace desperately needs not to be covering 20% of the buffer
with a giant popup.