Fix the different naming of params for chain type

# Description

Renaming the different naming of parameters for chain type.

Fixed the `ValidationError: 1 validation error for RefineDocumentsChain`

# The promblem

`RetrievalQA.from_chain_type` can execute successfully with 'stuff' chain type.

However, it cannot use with `map_reduce`, `refine`.

## Code
```python
prompt_template = """
Use the following pieces of context to answer the question, if you don't know the answer, leave it blank don't try to make up an answer.

{context}

Question: {question}
Answer in JSON representations
"""

QA_PROMPT = PromptTemplate(
    template=prompt_template,
    input_variables=['context', 'question']
)

chain_type_kwargs = {'prompt': QA_PROMPT, 'verbose': True}

qa_cahin = RetrievalQA.from_chain_type(
    llm=OpenAI(temperature=0.2),
    chain_type='refine',
    retriever=db.as_retriever(),
    chain_type_kwargs=chain_type_kwargs
)
```

## Result
```
ValidationError: 1 validation error for RefineDocumentsChain
prompt
  extra fields not permitted (type=value_error.extra)
```

---

I've tried to find the [source code](https://github.com/hwchase17/langchain/blob/d85f57ef9cbbbd5e512e064fb81c531b28c6591c/langchain/chains/question_answering/__init__.py#L146)

I see the different types have **different naming of parameter** as following:

* stuff

```python
def _load_stuff_chain(
    llm: BaseLanguageModel,
    prompt: Optional[BasePromptTemplate] = None,
    document_variable_name: str = "context",
    verbose: Optional[bool] = None,
    callback_manager: Optional[BaseCallbackManager] = None,
    **kwargs: Any,
) -> StuffDocumentsChain:
```

* map_reduce

```python
def _load_map_reduce_chain(
    llm: BaseLanguageModel,
    question_prompt: Optional[BasePromptTemplate] = None,
    combine_prompt: Optional[BasePromptTemplate] = None,
    combine_document_variable_name: str = "summaries",
    map_reduce_document_variable_name: str = "context",
    collapse_prompt: Optional[BasePromptTemplate] = None,
    reduce_llm: Optional[BaseLanguageModel] = None,
    collapse_llm: Optional[BaseLanguageModel] = None,
    verbose: Optional[bool] = None,
    callback_manager: Optional[BaseCallbackManager] = None,
    **kwargs: Any,
) -> MapReduceDocumentsChain:
```

* refine

```python
def _load_refine_chain(
    llm: BaseLanguageModel,
    question_prompt: Optional[BasePromptTemplate] = None,
    refine_prompt: Optional[BasePromptTemplate] = None,
    document_variable_name: str = "context_str",
    initial_response_name: str = "existing_answer",
    refine_llm: Optional[BaseLanguageModel] = None,
    verbose: Optional[bool] = None,
    callback_manager: Optional[BaseCallbackManager] = None,
    **kwargs: Any,
) -> RefineDocumentsChain:
```

---

If I use the following code, it can work:

```python
prompt_template = """
Use the following pieces of context to answer the question, if you don't know the answer, leave it blank don't try to make up an answer.

{context_str}

Question: {question}
Answer in JSON representations
"""

QA_PROMPT = PromptTemplate(
    template=prompt_template,
    input_variables=['context_str', 'question']
)

chain_type_kwargs = {'question_prompt': QA_PROMPT, 'verbose': True}

qa_cahin = RetrievalQA.from_chain_type(
    llm=OpenAI(temperature=0.2),
    chain_type='refine',
    retriever=db.as_retriever(),
    chain_type_kwargs=chain_type_kwargs
)
```

Maybe, the error comes from the different naming of parameters ?

* `context` vs `context_str`
* `prompt` vs `question_prompt`