Refactoring: dependency computations isolated in a separate class
Printer now supports any appendable + separated lists
Constructor body generation extracted as a method (+ migrated to Printer for convenience)
Initial support for factory methods
Parts of DependencyInjectorGenerator moved out
The rudimentary support for lazy injection removed
Imports are tracked when types are used
Migrated to Printer
Generating imports after all usages were generated
Injectors regenerated
A common method extracted
'hasSyntaxErrors' check moved from Diagnostic to PositioningStrategy

This makes possible to mark diagnostic errors when syntax error are present (by overriding isValid in PositioningStrategy subclasses).
KT-3378 "Type mismatch on override" not present when the initializer is syntactically incorrect
#KT-3378 Fixed
Replace "." with "_" in package$src class name
Generate package$src files for each package
Remove usages of isMultiFileNamespace
Make getContainingFile return null if it isn't JetFile
Move top level properties from package class to package$src
Extract method
Top level functions inside module should be invoked using package$src class