Override __getstate__ and __setstate__

We should decide to which extent the bricks should be copyable.
I think that it should be possible to clone a hierarchy of bricks
but without copying the parameters. The reason behind is that
`copy.[deep]copy` and `SharedVariable.copy` behave very differently.
The first actually copies the content of the variable, whereas
the second simple creates another Theano variable. To prevent the
possible confusions it is easier to avoid implicit copying of
parameters.
PEP8
WIP: GatedRecurrent brick

+ some small changes to the Recurrent brick
Update documentation
PEP8
Merge branch 'cloning' into mymaster
Introduce method signatures
MultiInputApplySignature and ForkInputs

And some small fixes to make it possible.
Iteration only when requested

one_step --> iterate
kwargs -> **kwargs
Preserve recurrent signature when forking inputs
Pass dimensionality to the initialization function.
Sequence generator draft
Convenient get_signature_func
Add `output_dims` to the signature
Override __str__ method
`return_list` option for apply methods
More accurate __init__ for RecurrentApplySignature
Move zero_state out of BaseRecurrent
`return_initial_states`, n_steps, batch_size