EDAM refactoring

Derive Sieves from an abstract base class, put forbidden chars into a
constant for lookup, code cleanup.

+ adapt to new interface.
Metadata: add #to_s / #to_str to NotePath

Makes parsing reversible, + code cleanups.
Metadata: Writers code cleanup
Metadata: add #call noop to Processor
Document lib modules and classes in YARD format
YARD lib documentation
FileEncoding module

Extensible, generic file encoding detectors.
Core Extensions: File #guess_encoding refactoring

Use the FileEncoding module.
Update YARD documentation

Include File and FileEncoding docs.
Extend YARD documentation coverage to 100 %
Update YARD documentation

Yay for 100 % coverage.
Core Extensions: Array#squash
Core Extensions: String#punct / #punct!
Core Extensions: IO code cleanup
SemanticVersion: code cleanup
SemanticVersion: clean up unit tests
SemanticVersion: rename file to semantic_version

Get in line with naming conventions.
Remove File#expanded_path

Too trivial to be worth a monkey patch.
SemanticVersion: full support for spec 2.0.0

Make prerelease and build info aware, add version bumping and metadata
manipulation facilities.
MultiMarkdownParser: refactor as Pathname delegate