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.
Not at all comfortable with us having this in the `BaseSerializer` implementation. (Yes I know we support `many=True` there, but still) We could have it in `Serializer` instead.

I'm still unsure about the trade off of the extra noise this introduces to the codebase, but don't see a better way to do things ATM.