Add a more memory efficient version of DictVectorizer

When loading really large files for SKLL, I found that temporarily storing a list of dictionaries to pass to DictVectorizer was frequently using up huge amounts of memory.  With `UnsortedDictVectorizer`, you can call `fit_transform` with a generator, and not have to waste the temporary space.

This sub-class also overrides `fit` so that the feature names are not sorted in that case either for consistency.

I would have just modified the `DictVectorizer` class to no longer sort the list of feature names, but I didn't want to break anyone's code that somehow relied on that.
Yes, I'm not too fussed either way. In terms of efficiency, it's quite possible that doing something like the following at the end is faster than constructing the list along the way:
```python
feature_names = np.zeros(len(vocab), dtype=object)
names_tmp, indices = zip(*vocab.items())
feature_names[indices] = names_tmp
```