Add middleware classes dynamically from configuration

Description

This pull request adds the capability to add additional middleware classes to edxapp through configuration, and without explicitly adding them to a `settings.py` file.

*Dependencies*: Works in conjunction with edx/configuration#4112

*Sandbox URL*: TBD - sandbox is being provisioned.

*Testing instructions*:

1. On the sandbox, check that the marketing parameter middleware takes effect ([see testing details here](https://github.com/open-craft/edx-theme/pull/16)), OR
2. On a devstack, create a middleware to do something, install it in your devstack's Python environment, and add it to the `EXTRA_MIDDLEWARE_CLASSES` list in `lms.env.json`; verify that it takes effect for incoming requests.

*Reviewers*

  • [ ] (OpenCraft internal reviewer's GitHub username goes here)

  • [ ] edX reviewer[s] TBD

*Settings*
```yaml
EDXAPP_FEATURES:
ENABLE_COMBINED_LOGIN_REGISTRATION: true
EDXAPP_EXTRA_REQUIREMENTS:

  1. Theme
    EDXAPP_ENABLE_COMPREHENSIVE_THEMING: true
    EDXAPP_COMPREHENSIVE_THEME_DIRS:

  • '/edx/app/edxapp/themes'
    EDXAPP_DEFAULT_SITE_THEME: 'pearsonx'
    edxapp_theme_name: 'pearsonx'
    edxapp_theme_source_repo: 'https://github.com/open-craft/edx-theme.git'
    edxapp_theme_version: 'haikuginger/pearsonx-marketing-params'
    ```

Done

Assignee

Unassigned

Reporter

Open Source Pull Request Bot

Contributor Name

Jesse Shapiro

Repo

edx/edx-platform

Customer

Epic Link

None

OSCM Assignee

None

Platform Map Area (Levels 1 & 2)

None

Platform Map Area (Levels 3 & 4)

None

Blended Hour Utilization Percentage

None

edX Theme

None

edX Squad

None

Github Lines Added

None

Github Lines Deleted

None

Priority

Unset