Generate an id that will to all intents and purposes be unique for a given replication task. This is an interface so
that we can mock and return predictable values for tests. This id is generally used for the creation of unique,
non-conflicting file system objects, but also to allow easy tracing of events in log files. A time element is
included to assist in debugging.
Care must be taken to ensure that generated IDs do not exceed the maximum allowed length for a snapshot name and a
Path element. In both cases I've been unable to find the imposed limits. Therefore
the length of the ID generated is conservative, which should also make it easier to read in any logs.