Versioning catalog items (take 2)

Leaving here for early feedback.


Supercedes #92 
Yes, forgot to update this. It is no longer needed because getRegisteredBundle doesn't throw.