[WIP] Features

This is a sketch of the API. It's basically just cribbed directly from sklearn.

A big picture questions:
1) How do you deal with the fact that some of the object should be trained on multiple trajectories simultaneously, whereas some don't need to be. Like, if you want to apply tICA on a dataset, the input to `fit()` really should be potentially more than one trajectory. Whereas if you want to apply DihedralVectorizer on a dataset, you can apply `fit()` on each trajectory individually, and then basically merge the results. There is a qualitative difference between these behaviors, so perhaps they should have different superclasses? (I'm leaning yes here, but I'm not sure exactly how it should work)
2) Some of the transformers can take trajectories as input and others take feature arrays as input. Should classes be grouped by what "form" of data they take as input in the inheritance structure? (I'm leaning no here)

cc @schwancr