[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
May be good to make this a little safer here, now that the type info is no longer final.
We could call this `fillInTypeInfo()` and check whether the type info is currently null, (or a MissingTypeInfo) and only then allow to change the field. Otherwise throw an IllegalStateException.