[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's considered a malpractice to use a mutable default values for kwargs. Either use an unmutable tuple: `n_hidden=(100,)` or better in this case make `n_hidden=100` work with literal integers (in that case the number of hidden layers would be assumed to be 1).

See: https://thenewcircle.com/static/bookshelf/python_fundamentals_tutorial/functions.html#_mutable_arguments_and_binding_of_default_values

If we want to enforce `n_hidden` to be sequence of ints (list, tuple...), I would rather rename that parameter to `hidden_layers_sizes=(100,)` instead.