func (h *Hitch) HandleFunc(method, path string, handler func(http.ResponseWriter, *http.Request), middleware ...Middleware) {
	h.Handle(method, path, http.HandlerFunc(handler), middleware...)
}
HandleFunc registers a func handler for the given method and path.
package hitch
import (
	"net/http"
	"github.com/julienschmidt/httprouter"
)
type Middleware func(http.Handler) http.Handler
type Hitch struct {
	Router     *httprouter.Router
	middleware []Middleware
}
func New() *Hitch {
	r := httprouter.New()
	r.HandleMethodNotAllowed = false  
	return &Hitch{
		Router: r,
	}
}
func (h *Hitch) Use(middleware ...Middleware) {
	h.middleware = append(h.middleware, middleware...)
}
func (h *Hitch) UseHandler(handler http.Handler) {
	h.Use(func(next http.Handler) http.Handler {
		return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
			handler.ServeHTTP(w, req)
			next.ServeHTTP(w, req)
		})
	})
}
func (h *Hitch) Next(handler http.Handler) {
	h.Router.NotFound = handler
}
func (h *Hitch) Handle(method, path string, handler http.Handler, middleware ...Middleware) {
	for i := len(middleware) - 1; i >= 0; i-- {
		handler = middleware[i](handler)
	}
	h.Router.Handler(method, path, handler)
}