Support reusing known sha during object creation.

This results in > 10% performance improvement during operations like rev-list.
Pass in known sha.
Split get_transport_and_path_from_url() out of get_transport_and_path().
Allow overriding default class for local git client access.
Fix typo: URI -> URL.
Split out tests for get_transport_and_path.
Add LocalGitClient.