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!
I agree it complexifies a bit the script, but it's very useful to to balance between RAM and CPU.  Parallelizing across folds is more efficient but necessitates more RAM because multiple time frame are cloned across classifiers, whereas, parallelizing across time samples does not require much RAM, but multiply the number of job instances, which is thus a bit slower.:

e.g.
'''

epochs = mne.Epochs(raw, events, event_id, -0.150, 0.500, proj=True,
                    picks=picks, baseline=None, preload=True,
                    reject=dict(mag=5e-12), decim=decim)
# Define events of interest
y_vis_audio = epochs.events[:, 2] <= 2
y_left_right = np.mod(epochs.events[:, 2], 2) == 1


# ----------------------------------------------------------------------------
# GENERALIZATION ACROSS TIME (GAT)
# ----------------------------------------------------------------------------

from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
from sklearn.feature_selection import SelectPercentile, f_regression

scaler = StandardScaler()
ufs = SelectPercentile(f_regression, percentile=50)
svc = SVC(C=1, kernel='linear', probability=True)
clf = Pipeline([('scaler', scaler), ('anova', ufs),('svc', svc)])

gat = GeneralizationAcrossTime(
	cv=10,
	clf=clf,
	parallel_across='time_samples', 
	train_times={'length': 0.100, 'step': 0.0133}, 
	n_jobs=-1)
gat.fit(epochs[y_left_right], y=y_vis_audio[y_left_right])

gat.parallel_across = 'folds'
gat.fit(epochs[y_left_right], y=y_vis_audio[y_left_right])
'''