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.
I wrote this up in the [developer guidelines](http://blocks.readthedocs.org/en/latest/developer_guidelines.html). It should be

```python
import logging
from abc import ABCMeta, abstractmethod
from collections import OrderedDict

import theano

from blocks.bricks import VariableRole
from blocks.utils import dict_subset, graph_inputs, shared_for_expression
```