libide/vcs: use PTY for clone operations
Adds support for using a PTY to write message updates from libgit2 so that we have better progress messages during cloning. This is much better than what we were doing with IdeNotification which couldn't handle lots of text updates very well.
To support this, our IdeVcsCloner got a new vfunc so we don't have to change the function interface. The clone request was easier to just add a new param to clone_async() since it's mostly internal anyway.
To allow passing FDs between the host UI and git daemon, a socketpair() is now used instead of a pipe with support for authentication.
This is a rather large commit because all of the pieces need to land together to be bisectable.