Transform the publisher to allow backward and forward iteration in the history of published data

The physics system will use it on the client to rewind the simulation to the last confirmed data given by the server and replay it.

Moreover a system can go backward to a previous state if he has to manage old data, for example if another thread published some data late.

This relieves the needs of synchronization between threads since there is an agreement on the age of the data they exchange, just like the client and the server will agree on the age of the data they exchange.

99% of the time it won't be necessary to rewind a system, but the remaining 1% justify we allow it to maintain the integrity of the data.