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.
Document the new behavior.
Fix scan opt since the new constant cache.
Use the new path to the class.
Pass the memod dict in deepcopy as it should be.
Fix a test error related to the constant cache.

theano-nose theano/tensor/tests/test_blas.py:t_gemm.test0a
Merge pull request #1579 from nouiz/faster_opt

Faster opt
Allow to reuse the NVCC_compiler without cuda_ndarray lib.

Needed for the new gpuarray.