Added a system for creating chat messages with a style.

Supports colors, fancy stylings, and click/hover events.

The sooner we don't need to use legacy chat the better.
Shouldn't this be an abstract class that takes the action and value as constructor arguments?
The action type check can still be done in the extending classes constructor's