Fixed #22799 Made GET and POST attributes of an HttpRequest object QueryDicts.

Previously, `GET` and `POST` on an `HttpRequest` were created in the `__init__`
method as dictionaries. This was not something you would usually notice
causing trouble in production as you'd only see a `WSGIRequest`, but in
testing using the test client, calling `.getlist` on `GET` or `POST`
for a request with no get/post data used to result in an `AttributeError`.

Changed `GET` and `POST` on a vanilla `HttpRequest` object to be mutable
`QueryDict`s (mutable because the Django tests, and probably many
third party tests were expecting it).

Also added a regression test for this by adding calls to `.getlist` to
the test on a newly created `HttpRequest`.
Gah - I was deliberately trying to avoid that. I think the answer is that they should always be, but as you can see from discussions above, we've decided not to change that as it would be backwards incompatible. I'm not really sure we want to be noting that they could turn up mutable if you're not using WSGIRequest in the documentation though, as that would really be noting a minor bug in the docs.

What do you suggest?

Cheers,

Duncan