Started support for multiple types Teaser/Collection

Moved a lot of code around to support different actions on different
types. Spilt things out in subclasses where needed and started adding
Teasers and Collections as examples