implementation of two linesearches in theano

one of them is based on only evaluating the function, the other
one respects the strong wolfe condition and implies also computing
the gradient with respect to the scalar we optimize.
pointer to the code I inspired myself from
Rop for FilterActs
Rop for pooling
missing cuda code for rop and WIP test file
add warning for the test
Fix a typo in PCD class docstring
Initial draft of the CD class.

This is just a copy of the VariationalPCD class for now.
Add an option to return non-shared variables in make_layer_to_state.

This is not implemented yet, only the flag argument has been added.
Add symbolic state methods.

I modified CD's get_gradients method so it uses theano symbolic variables
instead of shared variables for the state. To do so, I had to adapt the
make_state and make_layer_to_state methods, which I did by adding new
make_symbolic_state and make_layer_to_symbolic_state methods.

Also, I made sure CD used the provided input to initialize the visible layer's
chains.
Fix a typo (I think) in Softmax class
Fix a bug with make_theano_batch call
Fix issue with CD using variational trick.

I realized I was implementing a variational CD instead of a CD, so I fixed
that. CD now uses the same approach as PCD for its positive phase instead
of replicating VariationalPCD's positive phase.
Fix a bug in TransformerIterator
Add a num_examples parameter to make_symbolic_state.

The make_symbolic_state methods now accept a num_examples parameter,
which is a symbolic Theano variable.
Add DBM helper objects.

There's an object used as a TransformerDataset's Block to sample from
a DBM's last hidden layer, and an object used to stich RBMs together to
form a DBM, using Russ's policy regarding weights selection.
Generalize DBMSticher to  N RBMs, rename it RBMSticher
Revert CD's positive phase to be like VariationalPCD's positive phase
Fix a bug in TransformerDataset

The bug prevented TransformerDataset chaining since a TransformerDataset has no
'y' attribute, so if a TransformerDataset has another TransformerDataset as its
raw_dataset, its has_target() method returns by calling its raw_dataset's
has_target() method.
Fix a bug in Softmax's make_symbolic_state method