Add Ian tutorial on Theano web site.
(This was started with Raul Chandias Ferrari)
Flatten Composite.

This help gh-689 as it allow it to support up to 57 iteration of the
loop instead of just 43.

This could also help Theano cache in the case where graph could have
different fusion order, so different way the composite are in each
other, but do the same computation.

This make the printing of Composite more readable.
Fuse add/mul elemwise in a big add/mul elemwise before doing fusion
with Composite.

This allow to pickle bigger Composite graph as it simplify the graph,
so we bust later the max recursion limit.
Fix crash for Composite with multiple outputs just introduced and test the flatte.
Test the complete fix gh-689

We fix for atleast 158 loops of that problem.
Fix tests folling fusion changes.

The 2 subtensors tests change probably due to optimization order changes.
The 2->22 is that in the past, the Composite wasn't flattened, so the outer Composite was smaller.
Small refactoring to speed up get_scalar_constant_value.

This make less condition being tested. It speed up the slow scan tests.
Simplify Elemwise.perform. Now all inputs have the same ndim. No need of padding.
numpy dtype are correctly compared again string.

Speed up. get_scalar_constant_value and slow scan test.
Elemwise.perform don't prealloc output as we don't use it!
Fix exception just introduced.
Re add Elemwise.perform inplace.

It was making too much tests fail, but it still should keep the opt I wanted.
small test copy/past fix found by code review.
Merge pull request #1794 from nouiz/recursion_limit

Recursion limit