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
Thinking about it a bit more, the only hard clashes are with fields that rely on descriptors (i.e. FK, reverse manager, etc.). Simple fields like `IntegerField` or `CharField` don't clash because they are `setattr` on model *instances* while we only need access to the `check()` `@classmethod`.

I could see an argument for `Error` if the `check()` method isn't reachable, and `Warning` if you have a field with the same name.

What do you think @freakboy3742?