all(name, path, middleware) {
    if (typeof path === 'string') {
      middleware = Array.prototype.slice.call(arguments, 2);
    } else {
      middleware = Array.prototype.slice.call(arguments, 1);
      path = name;
      name = null;
    }

    // Sanity check to ensure we have a viable path candidate (eg: string|regex|non-empty array)
    if (
      typeof path !== 'string' &&
      !(path instanceof RegExp) &&
      (!Array.isArray(path) || path.length === 0)
    )
      throw new Error('You have to provide a path when adding an all handler');

    this.register(path, methods, middleware, { name });

    return this;
  }
Register route with all methods.

@param {String} name Optional.
@param {String} path
@param {Function=} middleware You may also pass multiple middleware.
@param {Function} callback
@returns {Router}