fix #10 Analyzer duplicate dependent fields, refactor Analyzer

Analyzer.run is now split in more methods which allows for
more tests in AnalyzerTest

Also Iterators are now used instead of indices for
Collection traversal and the removal of invalid elements.
This should make it easier to read and prevent errors when
incrementing those indices.