[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
no actually getters and setters would even be worse. @GaelVaroquaux 's point would be to explicitly pass the preallocated arrays for activations, gradients and deltas as arguments to private methods such as `_compute_*` and `_backprop` to make it more explicit about which datastructures are involved just by reading the prototype of the methods.

Actually by reading the code of `_fit` again, you don't even reuse the preallocated arrays for `_a_layers`, `_coef_grads`,  `_intercept_grads` and `_deltas`, even when `incremental` is `True`. There is really no point in making them attributes of the class, please convert them to local variables of the `_fit` method and pass them explicitly as argument to the private helper methods.

Also, `self._a_layers` should be renamed `activations` and `self._deltas` should better be renamed `updates`.