Added --previous flag to msgmerge command used by makemessages

Also took the opportunity to slightly refactor gettext options
so as to ease customization by subclassing the command.
Thanks Michal Čihař for the report and initial patch.
Fixed #22185 -- Added settings.CSRF_COOKIE_AGE

Thanks Paul McMillan for the review.
Reworked ErrorDict.as_json() to prevent unnecessary serialization/deserialization step.

Thanks @apollo13 for the suggestion. Refs #17413.
Fixed #22183: Don't make a table for M2Ms with through=
Revert "Fixed #22183: Don't make a table for M2Ms with through="

This reverts commit 1562b9896f8f614ef40fd032b1ec777280b377c1.
Fixed #22204: Bad circular-dep-breaking if more than one per run
Don't allow really long migration names
Fixed #22070 -- Changed verbose_name for apps in django.contrib to use title case

Thanks bendavis78 for the report.