implementation of the expr method

Conflicts:
	pylearn2/costs/mlp/dropout.py
additional functionality
implementations of get_data_specs
I was confused about what  means. IMHO abbreviations should use capital letters
some monitoring channels stuff
fix comment to refer to data not X,Y
cost should not be aware of target
fix gradients to use data instead of X,Y
Default input/target source for any model
functions to be used by dataset/iterator to select a batch of data

Conflicts:
	pylearn2/space/__init__.py
implementation of get_batch_size

Conflicts:
	pylearn2/space/__init__.py
add Theano test values if needed to tensors

Conflicts:
	pylearn2/space/__init__.py

Conflicts:
	pylearn2/space/__init__.py
fix bug in __eq__ of CompositeSpace
make_theano_batch for composite type

Conflicts:
	pylearn2/space/__init__.py
Use a tuple of Theano variables, not a TupleVariable as return value,
as is expected in the rest of the changes for the new data_specs
interface.

Conflicts:
	pylearn2/space/__init__.py
fix SGD to work with new interface

Conflicts:
	pylearn2/training_algorithms/sgd.py
The new interface obsoletes the supervised/unsupervised distinction.
I tried to keep the other additions: the on_load_batch callbacks,
and naming convention of the theano variables.
making monitor work with new interface

Conflicts:
	pylearn2/monitor.py
Remove special case for labeled/unlabeled

Conflicts:
	pylearn2/monitor.py
work in progress commit

Conflicts:
	pylearn2/datasets/dense_design_matrix.py
Add utilities to deal with nesting / flattening

I think ultimately this should go to spaces/
Add other helper functions and methods
Modify tests to test the new mapping class instead