do not schedule unnecessary recompilation on duplicate-class check;
fix data loss in classToSourceFile mapping after moving top-level class from one file to another file
only those sources associated with generated classes are considered "changed", that were compiled on the current round
adapt "duplicate classes" check to a case when a class is generated from multiple source files
if compiled class is associated with multiple sources, correctly update class data for not compiled associated sources
processing only those sources that were actually compiled on this compilation round
patch from nik: properly integrate changes after compilation of multi-source classes
ensure files marked dirty on this round are visible in the next round only (make a snapshot FSState copy on initial compile round),
introduce API to mark files dirty so that they are visible to successive builders on the current compile round
merge BuildFSState and FSState into one class;
explicit API to mark file dirty for the current or the next compilation round
Added markDirtyRecursively with filter.
updating class dependencies in a centralized way at the end of every compilation round
Not marking whole target as dirty when it was already marked so.

This should be cherry-picked into branch 139 as extra method variant