gstplayer: Improve query duration handling
The duration handling logic is changed to now listen to the 'duration-changed' message to handle duration changes. However, the duration can only be queried once the pipeline is prerolled (it's in the PAUSED or the PLAYING state). If that is not the case, the pipeline will receive an 'async-done' message once it's prerolled and the duration needs to be queried. With this new logic it's possible to remove the timeout to query duration at the start of the stream: if the pipeline is already prerolled, the duaration query will succeed. If not, the duration will be queried once an 'async-done' or 'duration-changed' message will be received.