[WIP] Add support for class_weight to the forests

This PR adds support for specifying `class_weight` in the forest classifier constructors.

- Right now it only supports single-output classification problems. It would be possible however to accept a list of dicts for each target (or just the preset string 'auto' overall), and multiply the expanded weight vectors such that a sample with two minority classes becomes even more important, etc. I couldn't find any precedent in other classifiers to guide this.
- Should an exception, warning or tantrum be thrown for an 'auto' `class_weight` used with the `warm_start` option?

Any other comments ?
Further to my comment about multiplying the output's weights for multi-output, this is what I was thinking for replacing #L402-412:

    cw = []
    for k in range(self.n_outputs_):
        cw_part = compute_class_weight(self.class_weight,
                                       self.classes_[k],
                                       y_org[:, k])
        cw_part = cw_part[np.searchsorted(self.classes_[k],
                                          y_org[:, k])]
        cw.append(cw_part)
    cw = np.prod(cw, axis=0, dtype=np.float64)

Another option would be to perform this action at the bootstrap level for 'auto' `class_weight`s in the `_parallel_build_trees` method. However, this would make 'auto' act differently to user-defined `class_weight`s, as the user-defined dict would be applied the same way regardless of the bootstrap sample. It would also add an extra computation for each tree grown, whereas this version only goes through the motions once.