Make sure RichDate is immutable (and cleanups)

I'd like to do more, but in the interest of compatibility, some
warts will stay.