[WIP] Sparse filtering

This implements the sparse-filtering algorithm by Ngiam et al. (http://cs.stanford.edu/~jngiam/papers/NgiamKohChenBhaskarNg2011.pdf). Sparse filtering is an unsupervised feature learning. In contrast to most other feature learning methods, sparse filtering does not explicitly construct a model of the data distribution but aims at generating features which are sparsely activated on the training data. It is relatively efficient and has the number of features to be learned as the only hyperparameter.

The implementation is based on the authors' Matlab code in their supplementary material (http://cs.stanford.edu/~jngiam/papers/NgiamKohChenBhaskarNg2011_Supplementary.pdf). Hence the slightly un-pythonic naming but I have preferred consistency with the authors' code. 

I am not sure if "decomposition" is the right module for this algorithm, maybe neural_network would be more appropriate?

I welcome any feedback on the code and if this algorithm is interesting for sklearn in general.