[MRG] Bugfix: Clone-safe vectorizers with custom vocabulary

I ran into the issue summarized by [this gist](https://gist.github.com/vene/b8a6e199ee764289c65e): Basically vectorizers throw away the `vocabulary` parameter in grid search. This is because the `__init__` function of vectorizers doesn't obey the rules required to make it clone-safe.  I added a minimal test and fixed it, but it needed some more changes to the tests: many of the tests were relying to `vect.vocabulary_` to exist straight after init.

It still seems like the `__init__` does a bit more computation than it should with respect to other parameters though.
This is needed to make an existing test case pass.  The test case calls `transform` without calling `fit`.  I think it's cleaner and more consistent not to allow such a call.