Generic backend for version-control systems.
Each backend should implement this signature.
Test whether the given repository is correctly initialized.
Init a repository.
Fetch changes from upstream. This is supposed to put the changes
in a staging area.
Be aware that the remote URL might have been changed, so make sure
to update accordingly.
Reset the master branch of the repository to match the remote
Check whether the staging area is empty.
Return the HEAD revision.
Create a backend from a VCS implementation.