WIP: Move mnist classification to experiments
First theano version
Fix some Theano implementation errors

- Validation data failed because state_update_f was not deleted
- Missing value prediction
- Larger datasets resulted in float64s
Disable visualizations by default
More theano work implemented
Mnist classification using associative memory
Clean up mnist runner
WIP: Implement classification via 'collision' layer

- Architecture would look like this: u -- U -- X -- Y -- y
- Also implement support for missing input values via nans
Add missing nonlinearity to collision layer

- Now the responsibility is on the parent layer to apply nonlinearity to
  the feedback given by the child.
Try a lot of things related to collision layer
Fix two minor runtime errors
Retain temporary state for visualization purposes
Add visualization of weights and estimates

Also fix weight rearrange code
Name Collision model branches accordingly
Add new classifier for mnist experiment

It trains a separate model for each class and then compares the
reconstructions error in testing.
Add func to print free GPU memory
Tune Supervised and MultiModelLearning models

- Improve accuracy of Supervised y -- Y -- X -- U -- u type learning
  by making the X update rule X = nonlin(phiyT * Y + phixT * X)
- Save memory with MultiModelLearning by training and testing each model
  separately one after the other.
- Lower max q_i to keep larger nets stable
- Turn off data normalization preprocessing: MultiModel learning
  went up 89 % -> 96 % !
- Save memory by not making input a shared variable but a real
  function input
- Increase convergence iteration limit
Implement adaptive Tau, introduce stiffness

- Tau now adapts to row-wise change pressure in each state variable
- Stiffness controls how sensitive the system is to small variation.
  High stiffness is more stable in larger systems but smaller stiffness
  seems to achieve better classification accuracy on some classification
  tasks.
Fix a few runtime errors
Add ability to train only a part of the model

- Update MultiModel to dedicate a group of neurons for each class