Use exceptions for MergeService error handling
Use exceptions for MergeService error handling

If any method called by `MergeService#execute` raises a `MergeError`,
that error's message will be logged, the model will be updated, and the
merge will fail.

jirutka/gitlabhq,LUMC/gitlabhq,darkrasid/gitlabhq,dreampet/gitlab,jirutka/gitlabhq,dplarson/gitlabhq,mmkassem/gitlabhq,t-zuehlsdorff/gitlabhq,dreampet/gitlab,t-zuehlsdorff/gitlabhq,dplarson/gitlabhq,stoplightio/gitlabhq,dplarson/gitlabhq,mmkassem/gitlabhq,dreampet/gitlab,htve/GitlabForChinese,iiet/iiet-git,darkrasid/gitlabhq,darkrasid/gitlabhq,t-zuehlsdorff/gitlabhq,htve/GitlabForChinese,axilleas/gitlabhq,htve/GitlabForChinese,axilleas/gitlabhq,stoplightio/gitlabhq,axilleas/gitlabhq,LUMC/gitlabhq,mmkassem/gitlabhq,darkrasid/gitlabhq,jirutka/gitlabhq,iiet/iiet-git,stoplightio/gitlabhq,iiet/iiet-git,LUMC/gitlabhq,iiet/iiet-git,stoplightio/gitlabhq,mmkassem/gitlabhq,dplarson/gitlabhq,jirutka/gitlabhq,LUMC/gitlabhq,axilleas/gitlabhq,dreampet/gitlab,htve/GitlabForChinese,t-zuehlsdorff/gitlabhq