Adds support for nested chalk expressions.

green(a + blue(b) + c) will now look the same as green(a) +
blue(b) + green(c), as expected. In the previous implementation the
output would have been green(a) + blue(b) + c, because the reset code of
the second expression would close all expressions around it as well.

Now this reset code is replaced by a start code of the outer lying
expression, both stopping the inner and re-starting the outer.

For example:

![screen shot 2014-06-21 at 06 21 53](https://cloud.githubusercontent.com/assets/3891755/3347835/d235d92a-f8fc-11e3-9151-938c3d9a4c32.png)

Where previously everything after the inner green text would have been white.
Nope. Say you have the string:

"I am a string `blue.open`that's blue here`blue.close`and `blue.open`here`blue.close`"

However, `blue.close` is the same as any other colour code's close code. So this is equivalent to:

"I am a string `blue.open`that's blue here`colour.close`and `blue.open`here`colour.close`"

Wrapping this in green would, before this pull request, result in:

"`green.open`I am a string `blue.open`that's blue here`colour.close`and `blue.open`here`colour.close``colour.close`"

After the first `colour.close` the word "and" would be the default colour - which is not the desired effect. So `[green]-[blue]-[default]-[blue]`

This pull request will transform this into:

"`green.open`I am a string `blue.open`that's blue here`green.open`and `blue.open`here`colour.close`"

Which is `[green]-[blue]-[green]-[blue]`.

As you can see, it's quite important to match all instances of the corresponding `close` code. This won't break further nested, e.g. {green{blue{red}}, as each pass clears up close codes and replaces them with open codes.

In summary: each time a string is wrapped in a colour all close codes of this colour already precent in the string are replaced by new open codes. Nested wrapping will still work, as the previous wrap did not leave any 'close' codes behind other than at the end.

Hope this explains it in a somewhat understandable manner :wink: