Versioning catalog items (take 2)

Leaving here for early feedback.


Supercedes #92 
`shouldForceCatalogItem` ?