I understand the goal, but I'm not sure about this. We're not really re-computing exactly the same thing here, and we may be adding an extra layer of complexity for little or no real benefit if we try to break down all strings passed into `Distance.add_string()` and assign a weight to each chunk.

This would probably necessitate a refactor of `string_dist()` and related methods to first use the logic from `color_diff()` and then apply `string_dist()` on each chunk, and we may simply have the inverse problem -- moving UI code into the matcher?

I can back this out for now, but if you are happy with the end-result, we could leave the functionality and re-work these implementation details later?