This is a semi-breaking change. The normal functionality of not specifying any hashes will default to CRC32, MD5, and SHA-1 as expected. However, all other flags have been renamed and act as an include (like how the SHA-256 and above functioned previously). If any of those flags are specified, then it overrides the default behavior and ONLY uses the hashes specified. So to get the same behavior as `--skip-md5`, a user would do `--include-crc --include-sha1`.
* Add DatStatistics class
* Add isDirectory setting
* Add CalculateStatistics method (nw)
* Add separate stats writing
* Use new methods
* Rename Write -> WriteIndividual
* Naive implementation of new writing (nw)
* Remove unncessary calls
* Make writing more DatFile-like
* Add console flag to constructor
* Remove unused stream constructors
* Move to local writers
* Remove inherent filename
* Fix invocation
* Use SeparatedValueWriter
* Fix final directory stats output
* Use XmlTextWriter for HTML
* Don't output separator on last stat output
* Remove now-completed TODOs
* Remove unused using
This was the last of the major bits of code that was technically distinct from Cleaning. This means that each of the bits of functionality that used to all be in Cleaner are split out into their approrpriate classes.
This had the potential to cause a lot of issues the way it was. Moving the actual functionality for cleaning, filtering, and applying extras to their appropriate classes allows for less redirection when calling into the code. Modification as a class was essentially a shell around things that should have just been a single call.