Add profiling detail for the MergeOptimizer
Fix comment.
make opt faster by using in2out instead of equilibrium.
pep8
Faster fgraph change during opt.

This make Merge Optimzer take 21s instead of 35s in one case.

I think this work correctly in case of revert.
Make a cache for TensorConstant.

This lower memory usage and speed up optimization by asking for less merge.
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