code: function (engine, fn, opts) {
                  if (typeof engine === 'function') {
                      opts = fn;
                      fn = engine;
                      engine = null;
                  }
  
                  if (fn.length === 1) {
                      fn = fn.call(expressBem, opts);
                  }
  
                  ASSERT(fn.call, 'Invalid middleware');
  
                  middlewares.push({
                      engine : engine,
                      fn     : fn
                  });
  
                  return this;
              }
docs: use middleware
  @param {String} [engine]
  @param {Function} fn middleware or generator (depends on arity)
  @param {Object} opts
  @returns {Engines}