Move timestamps from sync layer to client layer
Clients have different requirements for representing time: some don't need timestamps at all, some can use simple timestamps like we currently provide, and in future others may need more complex representations of time, incorporating timezones, for example. Timestamps should be moved up to the client layer so each client can represent time in its own way.