[New Feature] Fastfood

Implementation of the Fastfood algorithm by @felixmaximilian and @esc
 
We have been working on this code for quite some time now and we think that it is mostly ready for some public review. There may still be a few wrinkles to iron out but in general the code is in decent shape.

For details of the algorithm, see the documentation at:

https://github.com/esc/scikit-learn/blob/fastfood/sklearn/kernel_approximation.py#L503

Also check out the example usage:

https://github.com/esc/scikit-learn/blob/fastfood/examples/kernel_approximation/plot_digits_classification_fastfood.py

And the performance evaluation at:

https://github.com/esc/scikit-learn/blob/fastfood/examples/kernel_approximation/rks_vs_fastfood.py

To minimize dependencies we included an cython in-place implementation of the Fast Hadamard Transform:

https://github.com/esc/scikit-learn/blob/fastfood/sklearn/utils/cyfht.pyx

For ease of merging, the branch has been rebased against current master at the time of writing, prior to the pull-request.
> For me it is a question of style, I like to think that staticmethod is
> a good way to decouple certain functions that are simple and have only
> an in- and output from the state of the instance, aka. self. In the
> interest of consistency we could make them instance methods if you feel
> strongly about it.

I'd like them to be functions. Simply functions, not methods.