Classy

* Add classy AI algorithm
* Improve the AI benchmark script
* Provide a Django cache to AI algorithms and use it to cache deserialized classifier data.
* Add AI grading requirements, including EASE
* Use wheels to install AI grading requirements
* Silence warnings
* Use in-memory cache without pickling
* Add version info to serialized classifiers (both EASE and classy)
* Default AI settings and better error messages

Most of the changes in this PR are for running tests that rely on scikit/nltk/scipy/numpy in Travis within a reasonable amount of time.

I'm relying on a newer version of scikit learn than EASE does, both because it's cleaner (`FeatureUnion` was added in version 0.13) and slightly faster.

Still to do:
* Additional validation rules for when training examples don't contain at least one positive/negative example.
* Validate Classy using additional test essays.

@stephensanchez I believe this is ready for an initial round of review, but I'm not planning on merging this until I validate the algorithm with more test data.
I want to hold on to essays for the duration of a grading task (re-use for each criterion in the rubric), but not between tasks.  I'm concerned about putting essays in the main cache where they may not get garbage-collected, because we most likely won't re-use essays once they've been graded.