WIP: DAG support

Initial suggestion on how to support more general DAG structures for neural networks. The code might be a bit messy, but the idea works. The syntax works is as follows right this now:

```python
from pylearn2.models.mlp import NeuralNet, Softmax, Tanh

# Simple MLP
nn = NeuralNet(layers=[Tanh(layer_name='h', dim=20, irange=0.1),
                       Softmax(layer_name='y', n_classes=10, irange=0.1)],
               nvis=30)

# Shortcut from input to last layer
nn = NeuralNet(layers=[Tanh(layer_name='h', dim=20, irange=0.1),
                       Softmax(layer_name='y', n_classes=10, irange=0.1)],
               inputs={'y': ['h', 'features']},
               nvis=30)
```
I for one am opposed to merging any version of the PR that breaks modularity by requiring the maintenance of a separate parallel "inputs" structure. "layers" should contain all of the connectivity information, for reasons I specified on the pylearn-dev thread.