Refactor BitmapFontCache color markdown

Extract:
* TextMarkdown class - can be used to change different parts of text without using color tags inside text
* ColorTagMarkdownParser - parses color markup of a text and fills TextMarkdown object

Fix #2433 BitmapFontCache setting colors goes wrong
Instantiating a color on each frame is not a good idea. See the old code, please.
Also, I noted that after parsing the color you don't set the `color` field of `BitmapFontCache`. Maybe that's why the BitmapFontTest is broken.