Make LabelEncoder more friendly to new labels

This PR intends to make ``preprocessing.LabelEncoder`` more friendly for production/pipeline usage by adding a ``new_labels`` constructor argument.

Instead of always raising ValueError for unseen/new labels in ``transform``, LabelEncoder may be initialized with ``new_labels`` as:
  * ``"raise"``: current behavior, i.e., raise ValueError; _to remain default behavior_
  * ``"nan"``: return np.nan for unseen/new labels
  * ``"update"``: update ``classes_`` with new IDs ``[N, ..., N+m-1]`` for ``m`` new labels and assign
  * ``"label"``: set newly seen labels to have fixed class ``new_label_class=-1``

Tests and documentation updates included.

(edit: adding ``"label"`` to list for quick summary)
Seeing these in ``nose`` under bleeding numpy:
```
......./home/mjbommar/workspace/scikit-learn/sklearn/preprocessing/label.py:184: DeprecationWarning: numpy boolean negative (the unary `-` operator) is deprecated, use the bitwise_xor (the `^` operator) or the logical_xor function instead.
  y_array[-missing_mask])
/home/mjbommar/workspace/scikit-learn/sklearn/preprocessing/label.py:184: DeprecationWarning: numpy boolean negative (the unary `-` operator) is deprecated, use the bitwise_xor (the `^` operator) or the logical_xor function instead.
  y_array[-missing_mask])
./home/mjbommar/workspace/scikit-learn/sklearn/preprocessing/label.py:197: DeprecationWarning: numpy boolean negative (the unary `-` operator) is deprecated, use the bitwise_xor (the `^` operator) or the logical_xor function instead.
  y_array[-missing_mask])
/home/mjbommar/workspace/scikit-learn/sklearn/preprocessing/label.py:197: DeprecationWarning: numpy boolean negative (the unary `-` operator) is deprecated, use the bitwise_xor (the `^` operator) or the logical_xor function instead.
  y_array[-missing_mask])
........
```