AbstractBlogLayout subclasses override too much

AbstractBlogLayout forced subclasses to override the Queryset
class and the owner property in order to specify different owner
models. Now, subclasses can just override the owner_class.

This PR also refactors the code of the Queryset class based on the
fix that was implemented in Django with this ticket:
https://code.djangoproject.com/ticket/20378