Massively refactor data module

The main thing I've done here is take the old data module and split it up into a sub-package with three modules: [featureset](https://github.com/EducationalTestingService/skll/blob/feature/create_featureset_class/skll/data/featureset.py), [readers](https://github.com/EducationalTestingService/skll/blob/feature/create_featureset_class/skll/data/readers.py), and [writers](https://github.com/EducationalTestingService/skll/blob/feature/create_featureset_class/skll/data/writers.py).

The `featureset` module contains the `FeatureSet` class that was proposed in #81, which allows easy filtering and merging of datasets. I haven't created more general replacements for `filter_megam` and `join_megam`, but those should be simple to create with this new class.

The `writers` module contains an OO refactoring of the old file writing functions, and they all support printing out status, so you know how much of the file has been written.  All of the `Writer` objects take a `path` and a ` FeatureSet` as the arguments to their constructor, and then you just call `Writer.write()` to actually write out the file. It's very similar to who `CSVWriter` works.

Similarly, I went through and refactored the old private `DictIter` classes to be public `Reader` classes in the `readers` module that have a `.read()` method that returns a FeatureSet.

I've kept the old `write_feature_file` and `load_examples` functions, as to not break the public API, but there are warnings that they are now deprecated and will be removed in SKLL 1.0.0.
I went with `FeatureSet` because use that phrase about a dozen times in our documentation, (and in the config files) so I thought "if that's what we're calling these things, then maybe that's what the class should be called).

I agree `load_examples` returning a `FeatureSet` is a bit odd.  It's been marked as deprecated anyway though, so I'm not sure it really matters. In the future people should just create the appropriate `Reader` object for what they're loading if they're using the API.  I prefer that over relying on the file extension to determine what type of thing we're reading.