What is a version control system (VCS): types and how it works