Fixes #5

Not ready for merging. Here for review. See #5 and https://github.com/yeoman/yo/pull/167. Better ideas are welcome!
I changed the signature, but the offset is coming out inconsistent with the last regex.

For:

```js
console.log(yosay(chalk.red('hi')));
```

the replace function is being called twice, and logging:

```js
// first time:
offset: 31
styledIndexes: { '31': '\u001b[31m' }

// second time:
offset: 39
styledIndexes: { '31': '\u001b[31m', '34': '\u001b[39m' }
```

compared to the old way:

```js
offset 0
{ '0': '\u001b[31m' }
offset 7
{ '0': '\u001b[31m', '2': '\u001b[39m' }
```

I'm stuck again!