routing and middleware for go, compatible with http.Handler