Fix Constant Folding with Imports analysis

The change to the passmanager (adding an entry for the current module in the modules table) introduced a bug in constant folding, which used the modules table to deduce the imports.

Now we use a cleaner way to gather imports, thanks to a new analysis.
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
Fix Types analysis to deal with globals
Remove error when parsing code with globals
Prepare for backend - add C++ changes

For a rough explanation of how this will work, check this out: https://github.com/coyotte508/pythran/wiki/Typing-analysis
Change backend to deal with globals
Add export header and export macros when needed
Fix tutorial example
Add raw euler test cases

So we can test if they work with globals
test_env can capture output of __init__ function
Fix OrderedGlobalDeclarations

if a calls b and b calls b, a has greater weight than b. They used to be the same with the previous code.