Versioning catalog items (take 2)

Leaving here for early feedback.


Supercedes #92 
see `Strings.makeValidFilename(..)`.  it whitelists chars and trims repeated `_`.  makes sense to have a method here but one should refer to the other