[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

TODO:

- [ ] replace private attributes initialized in `_fit` by local variables and pass them as argument to private helper methods to make the code more readable and reduce pickled model size by not storing stuff that is not necessary at prediction time.
- [ ] refactor the `_fit` method to call into submethods for different algorithms.
- [ ] introduce `self.t_` to store SGD learning rate progress and decouple it from `self.n_iter_` that should consistently track `epochs`.
- [ ] issue `ConvergenceWarning` whenever `max_iter` is reached when calling `fit`
The difference is that, `decision_function` returns a raveled form of `y_pred` for the classifier when 
`self.n_outputs=1`. This is not the case with the regressor.