Concurrent Programming with Revisions and Isolation Types