Pluggable data sources for Metis

Metis now accepts data sources, executors, and their connecting parts (data access operators) from arbitrary locations.

The special `Stream` type has been replaced by the data access operator.

Note: happens to fix #336
I think I did this, need to check