MRG Random sampling hyper parameters

This is another shot at implementing randomized hyper parameter search in sklearn.
In contrast to #455, I use scipy.stats distributions for each parameter.

If I understand James' Paper correctly, one of the important points is not to use a grid.
Imagine having one totally irrelevant parameter. Using a grid basically makes a large part of the samples redundant, while using a continuous distribution is not affected by the presence of the irrelevant parameter at all.

For discrete parameters, the user can also specify a list of names i.e. ``kernel=['rbf', 'linear', 'poly']``, which is sampled from using a uniform distribution.

I don't like passing objects as parameters, but this seems to be the best way to specify a distribution.
A user can put in any object that supports ``.rvs()`` and scipy.stats.distributions already has a solid amount of predefined ones.