ENH: Add support for cross generalization for time_gen

@dengemann @agramfort

This is work in progress, I will let you know when to review it.

Thanks!
for example if you have a function foobar to be called of every raw of X. you can do:

out = parallel(foobar(x) for x in X)

or make foobar be able to process an interval and do

out = parallel(foobar(X_chunk) for X_chunk in np.array_split(X, n_jobs))

so you divide X in 5 if you have 5 jobs and each job runs in parallel.

ok?