Experimenting with Trilead-based SshSessionFactory.

I find hooking into JSch authentication mechanism painful. I think I
basically have to write a custom JschConfigSessionFactory and override
the getJsch() method, then create JSch instance whose Jsch.identities
field is properly populated.

Unfortunately JschConfigSessionFactory has some of the key methods
not overridable (such as the createSession() method), and given
that SshSessionFactory is a VM-wide singleton, these methods do not
really allow the caller of Transport to pass in the authentication
credential to use --- the natural way to do that would have been to pass
this in as a custom CredentialsProvider, but JschConfigSessionFactory
doesn't pass this object to places where I want to acceess it.

That's why I turned to Trilead. In Jenkins we've been using Trilead
extensively to connect slaves, and this works pretty well, especially
with respect to handing the authentication information as
CredentialsProvider and then turn it over to Trilead.

In this branch, the code integrates with ssh-credentials plugin.
hooking up custom credential provider
implemented support for HTTP basic auth
It's OK if the repository doesn't exist yet.

This is for clone and also to make withRepository usable as the remoting
version
This is meant to be working tree, not git dir.
this is bit more concise
actually test if the repository does exist or not
the directory needs to be clean or else JGit complains
rely on a released version