[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
```
self.a_layer = [X].extend(np.empty((batch_size, layer_units[i + 1]) 
                          for i in range(self.n_layers_ - 1))
self.deltas = [np.empty((batch_size, layer_units[i + 1]) 
               for i in range(self.n_layers_ - 1
self._coef_grads = [np.empty((layer_units[i], layer_units[i + 1]) 
                    for i in range(self.n_layers_ - 1)]
self._intercept_grads = [np.empty(layer_units[i + 1]) 
                         for i in range(self.n_layers_ - 1)]
```