[Codec] VP9 packet != buffer; stage 1

VP9 has show_existing_frame, which AFAICT forces some codec models to
copy uncompressed output video frames, as they aren't capable of having
the same buffer in the output queue more than once (roughly speaking).
We don't want our codec model to be one of those codec models, so this
commit starts de-conflating packet_index and buffer_index.

With this commit, VP9 with show_existing_frame decodes and displays
with use_media_decoder.  H264 continues to work, but for now
intentionally preserves packet == buffer (temporarily) to avoid breaking
code that hasn't yet been updated to allow packet != buffer.

(mediaplayer_tests getting VP9 is after SAR is plumbed from VP9 + some
changes to allow packet != buffer.)

This also tweaks some video_decoder_lock_ hold intervals, adds some
comments re. a potential sharp edge re. VideoFrame shared_ptr<> and
weak_ptr<> and video_decoder_lock_, and fences out any in-flight
CoreCodecRecycleOutputPacket() before packets go away.

Tested: use_media_decoder --vp9 (show_existing_frame/normal) / --h264, mediaplayer_tests (h264), use_aac_decoder_test
Change-Id: I8d967cd8ec2c5cd30f41542a0871f7d8e0abf844
28 files changed