Perform concurrency checking within the persistor (rather than rely on every viewer/client to do the check)

Details

Description

Currently it is the responsibility of each viewer to check whether a domain object has been updated prior to completing an edit.

For example, if an object is displayed, the viewer renders the OID (usually in the HTML) and also caches the version of the object somewhere (either in the HTML, or possibly in a http session). If the user then invokes an action, then the viewer resolves the object and checks that the version has not changed.

This ticket is to move this check into the persistor so that, when an object is resolved, the version is also supplied. The persistor then throws a concurrency check if there is a mismatch.

The intention is for the API of the Persistor to remain unchanged, accepting only an Oid to resolve the object, but to use the version details that can now be stored in the Oid (see ISIS-245).