[FLINK-1062] Type Extraction for Lambdas

I implemented the Type Extraction and updated all classes such that no Exception is thrown anymore when a user uses lambdas. I also added/updated several test cases to test the implementation.
This looks like a good way of doing it to make the code compile on Java versions prior to 8.

Here is a suggestion to give it more speaking error messages:

When you find that the `writeReplace` method returns a `SerializedLambda`, try to look up that class. If the lookup fails, throw an error saying something like "User code tries to use lambdas, but framework is running with a Java version < 8" or so.