First half-way attempt of mrenamer, file traversal and data extraction already works.
Implemented Node.mkdirs(), Node.Remove() and those operations go very smooth now.
Implemented file object moving and add children on nodes.
Moved addChildren and removeChildren to Directory; as this only applies to them.
Added a not-yet-implemented error.
Implemented data validation before anything bad can theoretically happen.
Added __main_import() to also move that code into isolated function scope.
Implemented a exists() helper on Node objects, cleaned up the initialization phase.
Implemented a --stage parameter and directory generator to stage move music files into.
Converted Node, File, MusicFile, Directory class invocations to named calls.
Renamed debuglevel argument --> dl in Node, File, MusicFile, Directory.
Ported the old callback argument into a much smarter Drupal-like hook mechanism.
Matured the hooks system a bit and implemented callbackTraverseFilter on the Collection object, yay, we can now skip stage+leftover dirs early on!
Typo
Implemented the Move, Remove hooks to now fully maintain our index. Made the leftovers instance parentless to exclude files moved into it from the index.
Implemented a string representation on the Collection instance.
Implemented format parsing and setting the parsed name out of the Sanitize Hook.
SafeString: implemented space duplication prevention.
Implemented music file hashing (name based) and relpath collecting to prevent ANY collission at sanitization/validation phase, implemented the necessary checks and tested them.
Implemented a 'new file name' argument in File.move(), implemented the actual Music moving! W0000SH