Inherited methods should reference model attrs

AbstractBlogLayout and BlogAdmin forced subclasses to override
the Queryset class and the get_form() function, respectively.
This commit provides model attributes that subclasses can override
instead.

Also, this commit updates AbstractBlogLayout's Queryset.published()
function to use fewer queries as a result of this bug being fixed:
https://code.djangoproject.com/ticket/20378