Comment system updates

Broke the comment system into multiple parts using requires. It makes
the code somewhat more readable but it's still a mess that needs a
ground-up rethinking.