[FLINK-1245] Introduce TypeHints for Java API operators

This PR contains:

- .returns(String), .returns(TypeInformation), .returns(Class) for all Java API UdfOperators
- a new UnknownTypeInfo with a corresponding new UnknownTypeSerializer which uses Kryo in a special configuration
- the TypeExtractor does not throw Exceptions anymore if it recognizes type erasure, 
  instead it prints log warnings and returns a UnknownTypeInfo
- Java 8 Lambdas can now be compiled and run with Oracle JDK for development (not efficient due to UnknownTypeInfo)
- since TypeInfoParser is now "Public API" I reworked it such it also support Pojos
- Unit Tests test TypeHints, Serializers, TypeExtractor and Lambdas
Since UnknownTypeInfo is not a Tuple type, why do we need the additional check here?