ENH sort option for memory-efficient DictVectorizer

Added memory efficient UnsortedDictVectorizer

When loading really large files for SKLL, I found that temporarily
storing a list of dictionaries to pass to DictVectorizer was frequently
using up huge amounts of memory. You can now call `fit_transform` on an
iterable, and not have to waste the temporary space.

Sorting is done in-place, so it doesn't waste memory.
MAINT refactor DictVectorizer's transform+fit_transform (1)

Also:

* postpone attribute setting to the end of the fit_transform algorithm,
  so that exceptions leave the transformer in a consistent state;
* call sort_indices on CSR result.

Didn't refactor fit as I couldn't get the code shorter without making
_transform cumbersome to read.
Merge branch 'pr/3683'

Fixes #3683 (squashed and refactored).
FIX error handling/memory deallocation in Liblinear wrapper

Fixes #3675.
TST more robust test for MemoryError from Tree._resize

Fixes #3686.
MAINT: handle frombuffer with empty 1st arg in utils.fixes
DOC single-pass DictVectorizer in what's new

Also spotted a typo.
ENH: Use the scipy C-based L1 distance if possible

This also removes the need for the size_threshold
parameter, as scipy's implementation doesn't allocate
large temporary arrays.
IncrementalPCA implementation
MAINT: set attributes as last action in DictVectorizer.fit

Prevents getting a half-initialized transformer when an exception occurs.
Updated what's new to add IncrementalPCA
Merge pull request #3285 from kastnerkyle/incremental_pca

[MRG+2] Incremental PCA
DOC Fix n_jobs documentation

You can take advantage of multiple CPUS for the different folds, not
just different values of l1_ratio
Merge pull request #3697 from luispedro/cv_doc_fix

DOC Fix n_jobs documentation
Merge pull request #3687 from perimosocordiae/fast-l1-dist

ENH: Use scipy.spatial.distance.cdist for L1 distance when possible