[MRG] Adding tests for estimators implementing `partial_fit` and a few other related fixes / enhancements

Attempting to fix #3896

**New `partial_fit` tests:**
The below tests are based off @arjoly's [suggestion](https://github.com/scikit-learn/scikit-learn/issues/3896#issuecomment-64862823).

- [x] 1. General tests
  * Assert that `partial_fit` returns `self` - Thanks @jnothman for [the suggestion.](https://github.com/scikit-learn/scikit-learn/issues/3896#issue-50330161)
- [x] 2. Check that an error is raised if the number of features changes from one partial fit to another.
- [x] 3. Estimator reset test
  * Check that doing `fit` after a set of `fit` / `partial_fit` restarts the estimator
  * Assert that `partial_fit` and then `fit` with a different number of features works without raising any Exceptions... - Thanks @amueller for [the suggestion](https://github.com/scikit-learn/scikit-learn/pull/3907#issuecomment-68411916)
- [x] 4. Check that classifier handles correctly the classes argument in the `partial_fit`.
  * a. Check if mismatch between `classes` argument and `np.unique(y_i)` for a particular pfit call raises `ValueError`.
  * b. Check that error is raised if `classes` is not specified during first `partial_fit` call.

- [x] Fix modules which do not pass the above tests.

**NOTE**

* `HashingVectorizer`'s `partial_fit` does nothing hence is skipped from tests...
* `MiniBatchDictionaryLearning` and `LSHForest` do not generallize well like other pfit capable estimators and hence `partial_fit` testing for the same should be done under its own dedicated tests.
* `MiniBatchKMeans` does not reset when fit after a `partial_fit` or `fit`. Hence is skipped for that test alone. - `FIXME` added to near the code that skips `MiniBatchKMeans` which should be included again once it is fixed.

hmm... the inner `try ... except` works along the lines of `assert_not_raises`... I am not sure how `assert_raises_regexp` would be useful here...

The outer `try ... except` is an alternative to : 
```
if isinstance(estimator, (ClassifierMixin, RegressorMixin)):
    fit(x, y)
else: # Transformer
    fit(x)
```

An unrelated issue.... looking at the function ( defined for python 2.6 )... [there seems to be no check for  the expected_exception](https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/utils/testing.py#L84)... Is that a bug or is it supposed to be deprecated definition no longer in use...?

For example would pass according to the definition 
```
def foo():
    raise AttributeError("bar")
    
assert_raises_regex(ValueError, "bar", foo)
```