touch: extract the logic of touching rev's to its own function
This refactoring will also help us in using the context manager for locks
in next patches and also help reducing the nested depth.
evolve: consider using three way merge to get the user for div resolution
This patch adds the logic to merge the users from two divergent csets
considering the base (i.e three way merge).
The case when all the three are different, we concatenate the two authors
of divergent csets.