Programming Distributed Collective Processes in the eXchange Calculus