Information-theoretic subset selection

This new feature adds information theoretic subset selection methods for biological data formats using the [PyFEAST](https://github.com/EESI/PyFeast) module. We have a pull request open, but it was closed several months ago. We have made some adjustments to the code and updated the versioning information as well.   
This nested forloop is doing a linear search into `unique_classes` and is O(NM) where N is the size of `label_full` and M is the size of `unique_classes`. Can `unique_classes` be transformed into a lookup first? (e.g., `unique_classes_lookup = {label: idx for idx, label in enumerate(unique_classes)}`. This would then let the full block be reduced to:

```python
unique_classes_lookup = {label: idx for idx, label in enumerate(unique_classes)}
return np.array([unique_classes_lookup[label] for label in label_full], dtype=float)
```