Use a ReadOnlyGitRepository for master repos

These are bare anyway, so we don't (generally) write things to them.
By allowing concurrent shared access to these we avoid causing
requests to fail just because they can't get a lock they don't
actually need.

Similarly, the source repo the CheckoutHelper uses only needs to be
read, so use a read-only repo there too.

Change-Id: Ica224f0a25fe8e2fc8ac95b2041255183cec3980