Add failing unit tests.
Return correct colorized string length.

When strings are passed to Colors::colorized, the string is altered by
swapping tokens for colorized encoded strings. Unfortunately, the string
length functions in `Colors` base the string length on the colorized
version of the string, often getting it wrong.

This commit introduces a `decolorize` method to remove color tokens and
encoded colors from a string. This allows the string's length to be
calculated using the actual string without the added information.

Unfortunately, the `decolorize` method is a little slow, so a cache was
added to make sure that the color conversions only happen once, not
multiple times. Where possible, the cached `decolorized` version of the
string is used for getting the string length as opposed to running the
string through the `decolorize` function.
Add tests for colorization and decolorization.
Add test for proper caching of values.
Add cache getter and clearer.

It is best to avoid trying to mess with protected properties
as it leads to tightly coupled code. Adding a cache getter
helps with this. Similarly, a cache reset is also great to
have.
Prepare the tests properly.

Make sure that the enable property is always in its
original state. Additionally, make sure the cache is
reset for each test.
Use camel casing to conform to project standards.
Fix broken test in PHP 5.3.
Merge pull request #60 from tollmanz/colorized-string-length

Colors::length returns incorrect lengths for colorized strings