FIX: fixing n_jobs arg + adding exception
ENH : new check_n_jobs functions and protect multiprocessing import
Merge pull request #4 from agramfort/fix_njobs_clu

ENH : new check_n_jobs functions and protect multiprocessing import

yep, good point. thanks!
WIP: neater internals for run_ica + support for additional rejection
nodes

- reduced redundand code by emplyong a named tuple
- added support for more flexible deteciton critera. Now target as well
as non-target scroes take indices or thershold. The kind of detection
is inferred from type
- additional nodes can be added vie a list of tuples
ENH: make save return self
ENH: adding detect_artifact method + private function

- we now can say:
ica = ICA(*args, **kwargs).save(fname)
ica.detect_artifacts(**args, **kwargs)

or

ica = ICA(*args, **kwargs).save(fname).detect_artifacts(**args, **kwargs)

or

ica = run_ica(*args, **kwargs)
ENH: inplace modification + return self
ENH: catching failing detection for run_ica

- if detection fails due to silly parameters passed,
  the unprocessed ica is returned instead.
ENH: addressing discussion
FIX: restoring intended behavior --

njobs were just added to ncpu, also when positive
ENH: Allow "cuda" if requested
ENH: Allow n_jobs="cuda"
Merge pull request #5 from Eric89GXL/fix_njobs_clu

ENH: Allow "cuda" if requested
FIX: once more only considering n_jobs < 0
Merge pull request #447 from dengemann/fix_njobs_clu

FIX: fixing n_jobs arg + adding exception in spatio-temporal clustering
Merge pull request #427 from dengemann/ica_notebook

WIP: neater internals for run_ica + support for additional rejection nodes