Fixed #23615 -- Validate that a Model instance's "check" attribute is a ...

...method.

The "check" name is a reserved word used by Django's Check framework,
and cannot be redefined as something else other than a method, or the Check
framework will raise an exception.

This change amends the django.core.checks.model_check.check_all_models()
function, so that it verifies that a model instance's attribute "check"
is actually a method, before calling it and collecting the error
messages.

A test is also provided, and this specific violation is documented and assigned
the id "fields.E008".

This fixes https://code.djangoproject.com/ticket/23615
As long as the error is a completely reliable detector, I think I could live with no message for fields that are unaffected by this problem, and an error for the ones that are. Our documentation could err on the side of caution, and advise against naming fields "check" (maybe with a note that clarifies that "it will *sometimes* work, but don't rely on that"). If the check is 100% rock solid reliable, and there's no possible way a "simple" field will be affected, I think the backwards-compatibility concern is enough to make the exception.