avcodec: add side_data type for updated metadata

This type is intended to be used to allow codecs to pass updated
metadata to applications.
avpacket: add pack/unpack functions for AVDictionary

These functions are intended for use with side_data which comes in an
AVPacket.
vorbis: handle special packets in the middle of a stream

This allows for updating metadata from new metadata packets in the
middle of a stream (e.g., MPD streams). There still needs to be a signal
that there *is* new metadata, but this is at least gets the data into a
data structure.
ogg: allow streams to update metadata
vorbis: append data from tags together

Currently, if there are multiple 'performer' tags, the last one is the
only one which appears. Instead, join them with a semicolon.
vorbis: extract metadata from the middle of a stream

If a special comment packet shows up in the middle of the stream, we
should extract it out into the vorbis stream metadata dictionary.

Also, if there is metadata in the packet on the way in, it might linger
since we only add data to the dictionary causing stale metadata to be
inserted into the stream. Instead, clear it to remove any doubt about
what is new and old.
avcodec/utils: use the unpack_dictionary function