Pluggable data sources for Metis

Metis now accepts data sources, executors, and their connecting parts (data access operators) from arbitrary locations.

`Transform`s are now `Operator`s and the special `Stream` type has been replaced by the data access operator.

You can look at this, but I still need to fix/run tests. It does work with both Python and Spark executors on some query I made up.

Note: happens to fix #336
To me, data access operators are the connectors between data sources and executors. If you agree with this and think it is clearer to call them connectors, I can do that. If you disagree, then I don't understand how connectors and data access operators are different.