[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.
Probably better to use `cdef _fht(cython.floating[: array_]`, using a [memoryview](http://docs.cython.org/src/userguide/memoryviews.html) instead of an explicit numpy array, here and in the other methods. (`cython.floating` is a [fused type](http://docs.cython.org/src/userguide/fusedtypes.html) that will compile versions for both `float` and `double`.)