Add support for "last_commit_id" in file update api
Description
I'm using GitLab CE 9.3 REST API v4 to perform file read and update operations.
My application gives users option to download file for review, do some modifications and then save their changes.
File update operation in Repository files API does not provide an option to detect concurrent file modification (i.e. some other user updated same file during my edit session).
It's such an irony that VCS Server API does not provide the way to detect conflicts!
Proposal
Introduce optimistic locking support via optional parameter last_commit_id in repository file update operation.
Actually this logic is already available in https://gitlab.com/gitlab-org/gitlab-ce/blob/master/app/services/files/update_service.rb#L38 and is used by UI (hidden field last_commit_sha in the view https://gitlab.com/gitlab-org/gitlab-ce/blob/master/app/views/projects/blob/edit.html.haml).
I'm ready to do PR for this feature.