Distributed Systems with Persistent Memory