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());

```

EDIT (@adamralph): Also adds a `WriteLine(params ColorToken[] tokens)` overload.
I agree with that and yes I think writing 

```csharp
ColorConsole.WriteLine(
    "Press ",
    "Escape ".Red(),
    "to exit.");
```

is the most likely, especially if that's how this area is documented.

I like your example of setting the color dynamically so it does make sense to leave it as nullable. The only other reason I can see for that method is if new colors are introduced in the future and so there wouldn't be color specific extensions for those without a new release.

I also prefer using the built in enum.

So to wrap up I'll leave it as nullable but make it non optional

```csharp
public static ColorToken Color(this string text, ConsoleColor? color)
```