decodebin3: Make update/posting of collection messages atomic
The presence (or not) of a collection on an input will determine whether events will be throttled so that there are only forwarded when that input gets a valid collection.
Therefore the input lock should be used.
In addition to that, we want to ensure that the application/user has a chance to reliably (i.e. synchronously) specify what streams it is interested in by sending a GST_EVENT_SELECT_STREAMS.
But we cannot allow anything to go forward until that message posting has come back, otherwise we run in various races.
Fixes #3872 (closed)