This adds support for a `clean` method/property, which receives a boolean
indicating whether to remove the destination directory before writing.
The default is `true` (consistent with previous behavior).
Setting this to `false` can allow for use in situations where the source
directory is a child of the destination directory, e.g. for gh-pages setups
where the source is contained within the same repository. Note that
moved/removed files will need to be cleaned up by other means.