Middleware (handler wrapping)

This adds support for wrapping handler functions with additional functionality.  Example:

    middleware := func(next http.Handler) http.Handler {
        return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
            fmt.Println("before")
            next.ServeHTTP(w, req)
            fmt.Println("after")
        })
    }

    r := NewRouter().Use(middleware)

I find this pattern very useful for implementing auth, logging, etc.  Is this something you'd be interested in merging into `mux`?