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
refactored corruption.py and added salt/pepper noise
fixed logical bug in corruption
small style fix
Documentation fix on TrainingAlgorithm.train
Good start on GSN code
Basic GSN functionality should be working
fixed small bugs
cleaned up my code a lot. Fixed bugs in gsn.py, added comments/questions for things I'm unsure about
removed unnecessary methods, implemented __call__ for gsn. No monitoring channels yet
Fixed some minor bugs in GSN code
Added parzen distribution code
wrote a test
still debugging
test passing