using
open fun <T> using(serializer: ThrowingFunction<T, Array<Byte>>, deserializer: ThrowingFunction<Array<Byte>, T>): Serde<@NonNull T>
Like using, using content-type 
application/octet-stream.
open fun <T> using(contentType: String, serializer: ThrowingFunction<T, Array<Byte>>, deserializer: ThrowingFunction<Array<Byte>, T>): Serde<@NonNull T>
Create a Serde from serializer/deserializer lambdas, tagging with contentType. Before invoking the serializer, we check that value is non-null.