[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
Hi @ogrisel , since `pickle.loads(pickle.dumps(expit))` always returns an error, can we just put the code below instead?
If we do that, then we will not face any problems with the `pickle` test, nor with module import conflicts.
```python
# added a code block that addresses the `expit` issue with python3
def _ufunc_reconstruct(module, name):
        mod = __import__(module, fromlist=[name])
        print(getattr(mod, name))
        return getattr(mod, name)
np.core._ufunc_reconstruct = _ufunc_reconstruct
```