Add string extensions for colorizing text

This is a resubmission of an original PR which adds the option of creating a `ColorToken` using a string extension method.

You can now call 

```csharp
ColorConsole.WriteLine(
    "Press".Colored(ConsoleColor.Gray),
    " Esc ".Colored(ConsoleColor.Red),
    "to exit".Colored(ConsoleColor.Gray));
```
or
```csharp
ColorConsole.WriteLine(
    "Press".Gray(),
    " Esc ".Red(),
    "to exit".Gray());

```

I'm wondering if we should indeed be returning here. I guess if someone were to pass a null instance of `ColorToken[]` the expected behaviour would be the printing of a blank line?

If so, we could just ensure that the `ColorText` constructor is null tolerant and just remove this condition entirely?