Looking at how master currently reports errors in provided subclasses, we get things like the following:
```
>>> InheritanceManagerTestParent.objects.select_subclasses('')
AttributeError: 'InheritanceManagerTestParent' object has no attribute ''

>>> InheritanceManagerTestParent.objects.select_subclasses('user')
AttributeError: 'InheritanceManagerTestParent' object has no attribute 'user'

>>> InheritanceManagerTestParent.objects.select_subclasses(InheritanceManagerTestChild1)
AttributeError: type object 'InheritanceManagerTestChild1' has no attribute 'split'
```

Currently, I'm raising ValueError to try and explain the situation more clearly, but I wonder if I'm mis-perceiving the need for such things?
Are the following exceptions reasonable enough, or do the changes to provide Model classes really warrant our explicitly raising ValueErrors (or equivalent) to explain what has gone wrong?
```
>>> InheritanceManagerTestParent.objects.select_subclasses('')
AttributeError: 'InheritanceManagerTestParent' object has no attribute ''

>>> InheritanceManagerTestParent.objects.select_subclasses(User)
AttributeError: type object 'User' has no attribute 'split'

>>> InheritanceManagerTestParent.objects.select_subclasses(InheritanceManagerTestParent)
AttributeError: 'InheritanceManagerTestParent' object has no attribute ''
```

The last is the only one that really differs; currently doing the equivalent raises:
```
InheritanceManagerTestParent.objects.select_subclasses('inheritancemanagertestparent')
AttributeError: 'InheritanceManagerTestParent' object has no attribute 'inheritancemanagertestparent'
```
which is a bit more enlightening, but not by much. Any thoughts?