The attached patch aims to finally resolve the problems, which are named in
IO-99, FILEUPLOAD-120, and FILEUPLOAD-125.
I choosed a conservative strategy: Basically I copied the FileCleaner class to an instantiable class FileCleaningTracker with instance methods. The static FileCleaner methods are now implemented by a static instance of FileCleaningTracker. (The name FileCleaningTracker is, of course, questionable.
The FileCleaningTestCase was also created by simply copying FileCleaner to FileCleaningTestCase. FileCleanerTestCase is now similarly implemented as a subclass of FileCleanerTestCase which uses the static instance of FileCleaner rather than a dynamically created instance.