Refactored to be stateless. Now uses regexp pattern matching.

As per issue #15, resolves a number of issues:

* Now works with frozen string
* Respects changes to self (no longer depends on caching the original string)
* Calls to colorise are now idempotent
* Works with strings formatted manually or by other libraries

Should be 100% backwards compatible.