Define a base DataIndex class to remove redundancy

Note, the indexes.Indexable mixin cannot be used unless get_model
returns a valid model. That is the reason why it is used in the subclasses
and not the DataIndex class.
Abstract out search method to remove redundancy across managers
Remove unnecessary cast to list from ValueListQuerySet in tests