git: don't pass shell=True to core.run_command()

On Windows, the Git.execute() method was passing shell=True to the
core.run_command() function.  This was to avoid a console window briefly
popping up on the screen each time git-cola invoked git, which could
happen if git-cola was invoked using "start pythonw git-cola".  But,
using shell=True is generally undesirable.  This change stops passing
shell=True and instead creates a STARTUPINFO structure and configures it
to ensure that any child process window is hidden.

Because the Windows shell is no longer being invoked, the replace_carot
function is no longer needed and is removed.

Signed-off-by: Daniel Harding <dharding@living180.net>