Fixed #16986 -- Model.clean() can report errors on individual fields.

This commit provides the tests for this issue but the actual problem was solved
by the ValidationError refactor in f34cfec and ee77d4b.

Refs #20199.
Merge pull request #1441 from loic/ticket16986

Fixed #16986 -- Model.clean() can report errors on individual fields.
Fixed #20852 - Fixed incorrectly generated left quotes in docs.

Sphinx generates left single quotes for apostrophes after
code markup, when right single quotes are required. The
easiest way to fix this is just by inserting the unicode
character for a right single quote.

Instances of the problem were found by looking for
">&#8216;" in the generated HTML.
Fixed #15511 -- Allow optional fields on ``MultiValueField` subclasses.

The `MultiValueField` class gets a new ``require_all_fields`` argument that
defaults to ``True``. If set to ``False``, individual fields can be made
optional, and a new ``incomplete`` validation error will be raised if any
required fields have empty values.

The ``incomplete`` error message can be defined on a `MultiValueField`
subclass or on each individual field. Skip duplicate errors.
Fixed #19918 -- Modified select_for_update to run on the write database.
Added section labels in cache docs
Fixed #20865 -- Fixed raw_id_fields to work with callable limit_choices_to.
Fixed #13252 -- Serialise with natural keys instead of primary keys.

Add ``--natural-foreign`` and ``--natural-primary`` options, and
deprecate the ``--natural`` option to the ``dumpdata`` management
command.

Add ``use_natural_foreign_keys`` and ``use_natural_primary_keys``
arguments, and deprecate the ``use_natural_keys`` argument to
``django.core.serializers.Serializer.serialize()``.
Update release notes and deprecation plan. Re-use existing models in tests.