User calendar iCal and RSS serialisation

This builds on a couple of other PRs, so don't review this just yet. Although feel free to have a high-level look if you wish to
I'd prefer to not add a module just for this use-case. ShortId only adds `_` and `-` which are annoying if you want to copy a string by double-clicking on it. I don't think it matters much whether we have more than an alphabet of 62 characters. As it stands currently, the attack space is 62^32 possibilities. Seems plenty wide to me?