command: minor simplification
command: change what the metadata property returns

Change the type of the property from a string list (alternating
key/value entries) to a map. Using the client API, this will return
MPV_FORMAT_NODE_MAP, while Lua mp.get_property_native returns a
dictionary-like table.
command: allow changing filters before video chain initialization

Apparently this is more intuitive.

Somewhat tricky, because of the odd state after loading a file but
before initializing the VO.
encode_lavc: copy metadata to output file

Closes #684

Signed-off-by: wm4 <wm4@nowhere>

Includes some minor cosmetic changes additional to the original PR.
move mp_tags stuff its their own .c/.h files in the common/ directory.
rename add_metadata to the more genera/descriptive mp_tags_copy_items_from_av_dictionary
copy AVFrame metadata into vf_lavfi priv

store it as an mp_tags object and add VFCTRL_GET_METADATA to access it from elsewhere
add vf-metadata property

This is a read-only property that uses VFCTRL_GET_METADATA
to retrieve the the mp_tags from the vf_lavfi priv structure
add autocrop.lua to TOOLS to demonstrate vf-metadata usage