Introduce typed callbacks for stream_t
This PR introduces typed callbacks as an alternative to the variadic argument pf_control.
The goal by introducing typed callbacks is to have a safer interface to plug into but also to move away from the mess around va_list (each compiler defines va_list differently, needs to have va_arg everywhere, limited support in safer languages, prone to errors, ...).
The driving factor behind this is to permit programming languages that don't have support for implementing a function that uses va_list to still be able to implement those callbacks.
As a first step this MR only transition the stream part of stream_t not it's demux part which will be done in a follow up MR.
A complete plan (still subject to change) can be found below !3200 (comment 365712).
This approach was suggested in the Rust RFC:
You can just add type-safe callbacks, and retain
pf_controlas fallback for legacy code. It wouldn't be the first time.