change sink_save to preferred_sink
in the V3, I addressed all Tanu's and Georg's comments: 0002-xxx.patch: remove the pa_subscription_post() in the pa_sink_input_set_preferred_sink()
0003-xxx.patch: Add the check of sink_input->sink->card in the subscribe_callback()
0004-xxx.patch: Initialize the varible old_sink_is_unavailable Add the check of core->default_sink == NULL || core->default_sink->unlink_requested in the pa_sink_move_streams_to_default_sink()
0007-xxx.patch: Move the calling of pa_sink_move_streams_to_default_sink() after the pa_core_update_default_sink() in the pa_sink_unlink() Add shutdown check in the pa_sink_move_streams_to_default_sink() Change the logging message in the pa_sink_move_streams_to_default_sink() Remove the sink and sink_input parts in the module-rescue-streams.c
============================================================
This is based on Tanu's design: https://lists.freedesktop.org/archives/pulseaudio-discuss/2018-October/030531.html
And this is only for sink-input and sink, not for source-output and source.
In the V2, I addressed all comments of V1 and split the big patch into small patches as suggested by Tanu. It will be easy to review in the future.