[MRG+1] TheilSen robust linear regression

A multiple linear Theil-Sen regression for the Scikit-Learn toolbox. The implementation is based on the algorithm from the paper "Theil-Sen Estimators in a Multiple Linear Regression Model" of Xin Dang, Hanxiang Peng, Xueqin Wang and Heping Zhang. It is parallelized with the help of joblib.
On a personal note, I think that the popular Theil-Sen regression would be a nice addition to Scikit-Learn.
I am looking forward to your feedback. 

Florian
> @arjoly I took this algorithm from the cited paper and wanted to make it easy for the reader to compare the implementation with the algorithm in the paper where it is called eta. Should I call it indicator instead? Coming from a mathematical background, I think that quite often there is no good name for a variable, it draws its meaning from its definition. Also, from my point of view, small variable names make an algorithm easier to read. For instance, we call our design matrix just X and the target just y, right? We could also call it design_matrix and target but an algebraic expression like np.sqrt(np.sum((design_matrix.T - target)**2)) is harder to read than np.sqrt(np.sum((X.T - y)**2)). I also often use abbreviations like nom for nominator and denom for denominator. Of course, I can easily change it b ut I really think it makes the algorithm harder to read. @GaelVaroquaux What do you think about this?

The convention for X and y is consistent everywhere in scikit-learn. We have strive to avoid mathematical notations. They don't tend to survive across domains and authors. In term of maintenance, it's harder to enter into the code and solves a bug later. It's also harder to get what the algorithm is doing. For instance with `residual_sum`, I know directly what it means. By contrast, the variable `r` doesn't tell me anything about what it is and fails to convey meaning and intuition. There are other examples such as `eta_0` and `learning_rate_init`, `k` and `max_features`.