Use gitlab_git add_tag instead of gitlab shell to prevent shelling out for better performance

Closed username-removed-274314 requested to merge pcarranza/gitlab-ce:create-tag-gitlab-git into master

Following the same style as in !1743 (closed), the logic of adding a tag has been moved to gitlab_git.

Also the logic in the service is simplified as we can expect the right exception from the repository object when the tag exists already or the target reference does not exists.

cc @DouweM