Time, Communication and Synchronisation in an Agent-Based Programming Language