Fix assert, broadcastable is always a tuple.
Add profilingof TopoOptimizer (reused by in2out, out2in)
Make SeqOpt profile the validate time for each sub opt and the global callback time.

Don't make TopoOptimizer profile the validate time as this is not needed.
pep8 and change opt name.
Fix the constant cache during compilation.
Raise a good error when we create a FunctionGraph with Cached Constant.
Remove import not used.
pep8
code clean up
Don't copy the cached attribute.
Make FunctionGraph() clone the input by default to don't have constant from the cache.

Disable the clone in some tests and other place where it should not be done.
Remove clone not needed
Do deep copy when asked!
pep8
Fix test of shape_of_variables and raise a good error to explain that the FunctionGraph interface changed.