Middleware is a named, simple filter, that only works on rock requests/response.

type t = private {
  1. filter : (Request.t, Response.t) Filter.simple;
  2. name : string;
}
val create : filter:(Request.t, Response.t) Filter.simple -> name:string -> t
val apply : t -> Handler.t -> Handler.t