Add support for varying arguments to Handler

Handler functions can take any combination and ordering of:

  * http.ResponseWriter
  * *http.Request
  * tie.Context
  * router.RouteContext