GSoC 2014: Standard Extreme Learning Machines

Finished implementing the standard extreme learning machines (ELMs). I am getting the following results with 550 hidden neurons against the digits datasets,

Training accuracy using the logistic activation function: 0.999444
Training accuracy using the tanh activation function: 1.000000

Fortunately, this algorithm is much easier to implement and debug than multi-layer perceptron :).
I will push a test file soon.

@ogrisel , @larsmans
I was taking the equation too literally  (see K0 and beta0) :-)     [K0 is `self._H_sub` and B0 is `self.coef_output_`]
![first_step](https://cloud.githubusercontent.com/assets/3382128/3810823/d9b52392-1c95-11e4-872d-bab0390eae1f.PNG)

And I overlooked the fact that ridge regression always computes the solution this form,
                                                              `inv(H^T H + (1./C)*Id) * H.T y`
instead of `Ax=B`
So I accidently pre-conditioned `self._H_sub` by multiplying it with `hidden_activations.T` because in fact, ridge does it automatically. 

Still, I was hoping I could control what is inside `inv()` and the outside parameters for the following reason.
Have a look at the induction step below,

![step_2](https://cloud.githubusercontent.com/assets/3382128/3810548/8c48390e-1c91-11e4-87d6-8d14ea099bae.PNG)
The solution for `Beta_{k+1}` doesn't look  like `inv(H^T H + (1./C)*Id) * H.T y`, although pre-conditioning will not really have an impact but it is not entirely accurate. I wish I could solve the following equation instead `inv(self._H_sub)*H.Ty`
Perhaps we need to separate the ridge solver for `Ax=B`  to allow the developer to manually set the content of `A` and `B`.

Did you get what I mean :P ?