Search: Prevent abstract models from being indexed

This builds on top of #714 to help prevent merge conflicts

If you have an abstract model in between two concrete models in the class inheritance hierarchy. Wagtailsearch will attempt to add that abstract model into the index which would cause many duplicates to be made.

This pull requests fixes this behaviour and also does some cleanup to centralise the "can this model be indexed?" logic