1. A method performed by a computer system, comprising: in a distributed replicated storage system of storage nodes that utilizes quorum-based replication, providing point-in-time branching of storage by (i) coordinating replicas of storage volumes represented by replicas of data blocks constituting the storage volumes with each version of a storage volume corresponding to one of a writable volume, a read-only snapshot that preserves the state of a storage volume at a given point in time, and a writable clone that can change independently of its source storage volume, and (ii) capturing distributed state of the storage volume replicas in a version tree that describes how the storage volume versions relate to one another, wherein nodes in the version tree correspond to respective ones of the storage volumes; generating a snapshot of a storage volume in the distributed replicated storage system, wherein the generating comprises, each time a snapshot of a writable storage volume is created, associating the writable storage volume in the version tree with a version number that is incremented at a quorum of the storage nodes in the distributed replicated storage system for each replicated data block of the writable storage volume; and writing new data to a replicated data block in a selected one of the storage volumes, wherein the writing comprises selecting a version number of the selected storage volume, announcing the selected version number and an associated timestamp to a quorum of the storage nodes, if the selected version number corresponds to the version number at a majority of the storage nodes propagating the new data to the majority of the storage nodes, and if the selected version number does not correspond to the version numbers at a majority of the storage nodes selecting the highest one of the version numbers reported by a majority of the storage nodes as the selected version number and propagating the new data to the majority of the storage nodes.