color: colorize based on output labels instead of parsing output
By overriding ui.write(), ui.write_err(), ui.popbuffer(), and ui.label(),
the color extension can avoid parsing command output and simply colorize
output based on labels.
As before, the color extension provides a list of default colors for
core commands/labels. Other extensions can provide their own defaults by
specifying a colortable dict (similar to cmdtable).
In this process, --color is promoted to a global option and the deprecated
--no-color option is removed.
% test issue352
adding he
llo
abort: '\n' and '\r' disallowed in filenames: 'he\rllo'
adding he
llo
abort: '\n' and '\r' disallowed in filenames: 'he\rllo'
adding hell
o
abort: '\n' and '\r' disallowed in filenames: 'hell\no'
adding hell
o
abort: '\n' and '\r' disallowed in filenames: 'hell\no'
f he
llo he
llo
f hell
o hell
o
% test issue2039
[0;35;1;4m? foo
bar[0m
[0;35;1;4m? foo
bar.baz[0m