FIX/COSMIT helper to identify target types

* Fixes bugs related to simply checking type(..) equality
* Refactors metrics and preprocessing
* Invalidates mix of sequences of sequences and label indicators in
  metrics
* Invalidates row vectors in metrics
* Fixes bug where single-class target led to incorrect F-score
FIX cannot use set notation for Py2.6
FIX need explicit dtype for array of sequences in numpy 1.3
COSMIT remove redundant target size check

This error is already being raised by check_arrays
FIX numpy 1.3 has no float16; use float32
FIX/TST np.squeeze in numpy1.3 fails with array of sequences
FIX numpy 1.3 throws error with array of arrays
FIX inconsistent cv_scores_ generation for randomized search and re-add example
FIX use Python 2.6-compatible str.format
COSMIT refactor cross-validation strategies
Include LeavePLabelOut in refactoring
A further refactor
COSMIT Base class for KFold/StratifiedKFold validation
COSMIT make BaseKFold abstract
COSMIT pep8 in cross_val_score
COSMIT Base class for [Stratified]ShuffleSplit
DOC clarify LeavePOut's combinatoric explosion
DOC similar note in narrative docs
DOC More explicit note
Merge pull request #2056 from jnothman/leavepout_clarify

DOC clarify LeavePOut's combinatoric explosion