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 docs for ManyToManyField.through_fields that got the argument description mixed-up
Raise ValueError if the given through fields are not proper FKs to the expected models
Fixed check for through_fields that would prevent other checks from running