[FLINK-337] [FLINK-671] Generic Interface / PAPI

This PR contains the new Generic Language Interface and the Python API built on top of it.

This version hasn't been tested yet on a cluster, this will be done over the weekend. I'm making the PR already so that the reviewing portion starts earlier. (since only minor changes will be necessary to make it work)

I will mark several parts where i specifically would like some input on.

Relevant issues:
Ideally, [FLINK-1040] will be merged before this is one, as it removes roughly 600 lines of very much hated code in the PlanBinder.

A while ago the distributed cache was acting up, not maintaining files across subsequent operations. I will verify whether this issue still exists while testing. That would not strictly be a blocking issue, as it stands i could work around that (with the caveat that a few files will remain in the tmp folder).
A Cross is implemented as a join where every pair matches. I don't know the implications of doing it in such a hacky way. (The comparison overhead should be negligible considering the current performance.)