Add ability to create classifiers at run-time based on configuration files.

This PR changes a lot in the `meta-classify` library, mostly to make it more friendly for being able to create classifiers at runtime. This involves adding several factories to create some components of classifiers also from configuration files (e.g., rankers for `knn` and loss functions for `sgd`).

This also formally introduces the notion of a `binary_classifier`, which is a `classifier` that can predict two different labels, but also provides a `predict()` function that returns how "confident" the classifier is that the given document is a "positive" example. (This is useful for cleaning up the ensemble methods and the classifiers that are used to construct them).