This work required a major internal refactoring of how streams (audio, video, text, maybe others in the future) are handled by liblinphone.
This refactoring introduces a new design, where a streams are managed through a common base class named 'Stream', by a new class StreamsGroup that has the responsability of coordinating streams together.
In addition, these classes are provided with an OfferAnswerContext, that contains a representation of SDP local parameters, remote parameters, and agreed parameters.
The IceAgent has been redesigned too, renamed as IceService. It is now invoked by the StreamsGroup, and given the same OfferAnswerContext.
The IceService now supports handling of several IP addresses, using getifaddrs() (linux, android, iOS, Mac), windows to be done. The new code is more compact.
The internal function sal_stream_description_active() has been removed as its name was confusing.
Instead sal_stream_description_active() can be used to know if a stream is active (ie port number not zero and no a=bundle-only).