[WIP] 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).

- [ ] 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)
  * Clone test... `assert clone(est).partial_fit == est.partial_fit`
- [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)
- [ ] 4. Multiple partial fit call tests
* Based on @jnothman [suggestion](https://github.com/scikit-learn/scikit-learn/pull/3907#issuecomment-68478630)
- [x] 5. 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.
- [ ] Fix modules which do not pass the above tests.
  * Fix `MiniBatchKMeans` to make it pass the 3rd test


**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.
Sorry, I didn't have time to read it closely. You're right, that's inapplicable. It just seemed strange that try-except should be necessary to catch an exception that we want raised. I guess the intention is that a particular message is shown. Perhaps that's unnecessary, as it makes the test much harder to read, but I'm not especially concerned as long as the code is clear (i.e. add a comment, please).

Also, never ever use `except:` without an exception type. Prefer `except Exception:` which will not catch `KeyboardInterrupt`.

>  there seems to be no check for the expected_exception...

And I agree, that looks like a bug in the `assert_raises_regex` implementation here, but shouldn't be true for the imported one I hope!!