Providing meaningful error message if you forget many=True. Closes #1914.

This addresses #1914.

We check the instance for beeing either a `list`, `tuple` or `QuerySet`. That should address most cases. We cannot use ducktyping by checking for existence of `__iter__` or similiar things. This would include too many kind of objects e.g. `dict`s  are perfectly fine non-many objects.
Moving it to the `Serializer` class should be better, I agree.
Another solution for keeping that outside of the implementation is to catch the error with a method or class decorator.

With class decorator:
```python

@error_hint_if_list_given_as_instance
class Serializer(BaseSerializer):
    ...
```

With method decorator:
```python

class Serializer(BaseSerializer):
    @property
    @error_hint_if_list_given_as_instance
    def data(self):
        ...
```

Both cases would decorate the `data` method/property and therefore catch the `AttributeError` outside of the actual serializer logic.

I have not seen that pattern before, but at first glance it looks quite appealing.