refactor gitserver search errors and instrumentation
Created by: camdencheek
This is a minor refactor stacked on #26887 that changes how errors are handled in the gitserver search path as well as where we handle instrumentation. Basically, the idea here is to move all instrumentation from (*Server).search()
up into the (*server).handleSearch()
method. This keeps the instrumentation cruft out of the search path, and allows us to more easily use the error value in instrumentation. It also has the benefit of better encapsulating the search code so it doesn't depend on a http writer or request.