Fixes #11. When serializing a lambda, the generic parameters have to be
known at the call site of the lambda:

final Function<Integer, String> f = i -> String.valueOf(i)
// this is a SerializableFunction<Integer, String>final
SerializableFunction<Integer, String> sf = i -> f.apply(i);

If not, the generic types arguments will resolve to Object:

final Function<Integer, String> f = i -> String.valueOf(i)
static <T, R> void helloTypeErasure(Function<T, R> f) {
  // this is a SerializableFunction<Object, Object>
  final SerializableFunction<T, R> sf = i -> f.apply(i);
}

Please keep this in mind when matching/decomposing function objects!!!