[scala] Add mkMap in TreeGen
Refactor TupleTypeInfo (and Serializer/Comparator) into Base Classes

Now we have TupleTypeInfoBase, TupleSerializerBase, and TupleComparatorBase. They
are now super classes of TupleTypeInfo and the others.

This change is necessary for allowing the Scala API to reuse most of the
functionality.
Use APISpecificExecutionEnvironment in flink-java

Before, DataSet and the Operators used java.ExecutionEnvironment. Now they
use the interface, so that they can be reused for the Scala API.
Rename APISpecificExecutionEnvironment to APIEnvironment

Also rename APISpecificExecutionEnvironmentBase to APIEnvironmentBase.
Make executionEnvironment protected in APIEnvironmentBase

Was private before, but child classes need access.
Perform TypeExtraction outside of Java Operators

Before, FlatMapOperator, GroupReduceOperator, MapOperator, and MapPartitionOperator
performed the Type extraction themselves while the other Operators had TypeInformation
parameters. Now the are all unified, which makes it possible to use them from the
Scala API.

Also Key extraction for selector functions is moved outside of Keys.java
Move the Iteration "Operators" to the operators package

I'm doing this in preparation for the Scala API rework, since then I can just copy over
the operators package and use them for Scala.
Make DistinctOperator and Keys use TupeComparatorBase

Was TupleComparator before which does not work when used from the Scala API.
First commit of Scala Rework (Work in Progress)

This commit is not finished