Add StratifiedKfold and StratifiedRandomSub

I also added `unique_inverse` in `utils.jl` which returns a vector of unique elements of an array and a vector of vectors of their indexes, but did not export it. 

Note that the way `StratifiedKfold` works is not consistent with `Kfold` in master right now, but is consistent with `Kfold` in the pull request in #5. That is, if #5 is merged, `Kfold(n, k)` and `StratifiedKfold(fill(1, n), k)` will do the same thing.