Support multiple instances of the same middleware

Allow the developer to mount the same middleware in the same phase
multiple times with different configuration.

Example config:

    {
      'auth': {
        'oauth2': [
          {
            args: 'first'
          },
          {
            args: 'second'
          }
        ]
      },
    });