Add separate functions for each coloring type.

This is more than a draft; I'm just jotting down ideas to see how they
look on the screen.
Use const `str` parameters.

This is a more reasonable approach.
Fix the proposed helper functions.

I think this can be simplified with templates. I'm wondering if the
colorize function could be made compile-time when that's possible.
Try cleaning-up the module with templates.

I'm not sure about this, but it saves a few lines and is still pretty
easy to understand, while having no runtime cost.
Use a generic function for the `colorHelper`.

Instead of using a template. This is cleaner; I don't know why it didn't
come to my mind. I'm not sure if it's possible to make it work while
using the private specifier.
Fix style for template constraints.

I'm simply trying to follow what I see in the wild; not sure about this
either.