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
3 jobs for wip/jfelder/async-duration in 10 minutes and 12 seconds