Restore colour to rustdoc

This not only gives back the colour to structs, traits, and functions, but also restores the long-lost colour to enums. I’ve run [`linkchecker`](http://wummel.github.io/linkchecker/) and there don’t seem to be any more invalid links than usual.
I’m not entirely sure if the way I’ve implemented this is very idiomatic or reliable, but it seems to work.

Closes #17131.
Closes #16712.
Closes #16711.
Would splitting `DefTy` into `DefTy` and `DefEnum` be a viable solution? (Why exactly are they merged in the first place?)