func (h *Handler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
	if !h.tryServe(w, req) {
		h.root.ServeHTTP(w, req)
	}
}
ServeHTTP serves our redirect, html meta tag, or the root
http.Handler.
package goimport
import (
	"fmt"
	"net/http"
	"path"
	"sync"
)
type Handler struct {
	mu    sync.RWMutex
	root  http.Handler
	paths map[string]Package
	srcs  map[PackageFinder]Packages
}
func Handle(root http.Handler, sources ...PackageFinder) *Handler {
	if root == nil {
		root = http.NotFoundHandler()
	}
	h := &Handler{
		root:  root,
		paths: make(map[string]Package),
		srcs:  make(map[PackageFinder]Packages),
	}
	for _, src := range sources {
		go src.FindPackages(h)
	}
	return h
}