Monitors

This is first attempt at automatic validation routine creation. I sidestepped the issue of selecting proper variables for monitoring - since the tagged theano variables carry the information on how to aggregate them, the minimal validator needs just the list of variables. Selection should be handled elsewhere.

My idea is that such a validator would be run in the training loop via a hook. Another function would save somewhere or print the computed values.

**Update:**
I added a helper class for monitoring during training. It takes a list of variables, allocates storage for them, creates a list of updates to compute and store the monitored values during a call of the training function and provides a helper function which reads out the storage as a dict.

I changed the names to be more descriptive, but I am still not too fond of them.

What is important is that the *Monitor classes are agnostic to the model (both read a list/dict of theano variables) and to the way the training/main loop runs as long as:
1. updates can be added to the training function - this is a common requirement
2. The trainer and main loop have provisions to run hooks after each batch/epoch - this again is quite easy to meet.

Storage of computed values should be done elsewhere. It will also be easy since the *Monitor classes return dicts from names (or other user-specified keys) to values.
I am not sure I understand what the intended usage of this class is. Apparently it is not used for storing monitoring values.

Also I do not like having in the master branch code which is too future-oriented. Whereas your `ValidationMonitor` (in fact I the old name `Validator` was a way better, IMHO) can be used in short-term perspective by writing a respective, PyLearn2 wrapper, this class seems to be designed for our own future main loop which is yet to come, and it is hard to review the code when one does not have an understanding how it will be used.