Provider return and parameter type abstraction.

TypeMirror was used to represent method/parameter type. It required
Types util to perform comparison. That's why Types had to be passed
arround. With encapsulated type abstraction Types has to be provided
only for resolution process.
Generator identificator is only required for saving module to file.

Generator class was stored in object graph only to be transfered to
resolved graph. It was fixed by removing any references of generator in
object graph and passed to file writing method instead.