**Description**

Replace the Configuration JSON text-area with a form that has individual input fields for each key & value. This will remove the need for the user to provide a json object. See hashicorp vault's key-value secrets UI for an example of what this might look like:

![Screenshot 2020-09-21 at 12 06 03](https://user-images.githubusercontent.com/17148324/93759844-df04f680-fc02-11ea-8613-f3bcc0b22d09.png)
 
- If present these keys and values should be serialised as json client-side and posted to the trigger-dag API endpoint as the `conf` request-parameter.
- By default no conf request-parameter is sent. Perhaps a checkbox should be used to determine whether conf is sent at all?
- The user may want to add new keys, or remove keys & values that they have previously added.
- [PR-10839](https://github.com/apache/airflow/pull/10839) is pre-populating the form with the DAG's default params. The new form should be pre-populated with the keys & values from `DAG.params`


**Use case / motivation**

Currently when triggering a manual DAG run with user-provided runtime parameters, the user has to provide a correctly formatted JSON object. Filling in a form with keys & values will be a significantly better user experience, and will be less error prone & laborious than handling json in a free-text field.

This builds on the great work already done on enhancing the Trigger-DAG functionality

**Related Issues**

Originating PR: https://github.com/apache/airflow/pull/10839
"""Shows configuration."""
        raw = request.args.get("raw") == "true"
        title = "Airflow Configuration"
        expose_config = conf.get("webserver", "expose_config").lower()
        
        if raw:
            if expose_config == "non-sensitive-only":
                from airflow.configuration import SENSITIVE_CONFIG_VALUES
                updater = configupdater.ConfigUpdater()
                updater.read(AIRFLOW_CONFIG)
                for sect, key in SENSITIVE_CONFIG_VALUES:
                    if updater.has_option(sect, key):
                        updater[sect][key].value = "< hidden >"
                config = str(updater)
            elif expose_config in {"true", "t", "1"}:
                with open(AIRFLOW_CONFIG) as file:
                    config = file.read()
            else:
                config = (
                    "# Your Airflow administrator chose not to expose the configuration, "
                    "most likely for security reasons."
                )
            return Response(
                response=config,
                status=200,
                mimetype="application/text",
                headers={"Deprecation": "Endpoint will be removed in Airflow 3.0, use the REST API instead."},
            )
        if expose_config in {"non-sensitive-only", "true", "t", "1"}:
            display_sensitive = expose_config != "non-sensitive-only"