Overhaul type dependencies

TypeDependencies tries to deduce everything that the Types analysis will need in order to deduce this or that type, and then construct a graph in ReturnTypeDependencies with that.

The changes are that:
- a lot more things are considered
- the order of the graph is reversed, an (a,b) edge now means a depends on b
- instead of keeping all the paths of dependencies possible, two values are kept: the set of all the dependencies, and a boolean indicating if a type can be deduced independently of all those dependencies (for example, if a variable had x = 1 somewhere, it would be True)
Fix Reorder transformation with new dependencies analysis

Also add Callees and AcyclicCallees analyses, which allow a) to know what functions call which other functions and with what arguments, and b) the same thing, with the cycles broken if any, and also provides a graph of dependencies with those calls added to it