Port UserApplyPatch to Go

UserApplyPatch is currently handled by the Gitaly-Ruby sidecar, and should be ported to Go for performance reasons. This could be handled by shelling out to Git, leveraging Git2Go, or another way.

Edited by Mark Wood