[MRG] Generic multi layer perceptron

Currently I am implementing `layers_coef_` to allow for any number of hidden layers.

This pull request is to implement the generic Multi-layer perceptron as part of the GSoC 2014 proposal. 

The expected time to finish this pull request is June 15

The goal is to extend Multi-layer Perceptron to support more than one hidden layer and to support having a pre-training phase (initializing weights through Restricted Boltzmann Machines) and a fine-tuning phase; and write its documentation.

This directly follows from this pull-request: https://github.com/scikit-learn/scikit-learn/pull/2120
It looks like the call to `_ufunc_reconstruct` can sometimes trigger a module import that changes the dict of imported module `sys.modules`. I think this can be considered a bug in the `pickle` module module that should be made robust to such change by calling using something as:

```python
for module_name, module in list(sys.modules.items()):
    ...
```

It would be great to try to write a pure-python non-regression test to submit with a fix to Python.