Support STI in CollectionDecorator subclasses

Includes #474.

This allows STI by stopping an `ArticlesDecorator` from using `ArticleDecorator` to decorate the items; instead, the item decorators are inferred from each item (unless the user specifies a decorator by passing the `:with` option, or overrides `decorator_class`).