Chalk has a few more options and doesn't mess around with String.prototype.
Still hitting some inconsistent behavior in different NPM versions/platforms with invalid uppercase dependency names per https://github.com/npm/npm/issues/3692. Partial fix for #33.