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
I think this attribute would be better named `n_iter_`. Also it might be interesting to report the number of batch iterations when the `_backprop_lbfgs` method is used also in the same `n_iter_` attribute for consistency. This is reported under the `'nit'` key in the information dictionary of [fmin_l_bfgs_b](http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fmin_l_bfgs_b.html].

`n_iter_` would thus be the number of epochs for SGD and the number of batch iterations for the LBFGS optimizer.