Better solution for highlighting git error output

Highlighting all output to stderr was a terrible solution, as stderr is
not solely used for error output, and git uses it extensively for things
like progress output which is flushed immediately (stderr is not buffered).

Improved solution, which is still pretty rubbish, only highlights based on
matching patterns, and runs git via the script command to ensure it sees
both output streams as terminals, and doesn't buffer progress output.

At the moment, this solution only works for whitelisted git commands,
and doesn't work for aliases by default, which really sucks.