def use(middleware, *_args, &block)
      stack(middleware).use(middleware, *_args, &block)
    end
def use(middleware, *_args, &block)
      stack(middleware).use(middleware, *_args, &block)
    end
Adds middleware to the current stack definition

 @param [Class] middleware  The middleware class to use in the stack
 @param [Hash]  opts        An options hash that is passed through to the middleware when it is instantiated

 @yield The block is provided to the middlewares #new method when it is initialized

 @example Bare use call
   MyApp.use(MyMiddleware, :some => :option){ # middleware initialization block here }

 @example Use call after a stack call
   MyApp.stack(:foo).use(MyMiddleware, :some => :option){ # middleware initialization block here }

 @see Pancake::Middleware#stack
 @api public
 @since 0.1.0
 @author Daniel Neighman