New ContentModificationException

Thrown when any I/O operation fails in a ContentModifier.
Make ContentModifier more testable, part 1

Make it take two Paths as arguments; one is the file to replace, the other the
temporary file.

Create two static factory methods to build concrete instances.