vlc_objects: simplify VLC_OBJECT cast handling
Like done by _Generic in the C version, use overloading functions to define the correct casting behaviour depending on whether the pointer is already a vlc_object_t or possess a vlc_object_t as ->obj.
This removes the need for listing all the objects which need a casting case, and non-vlc_object_t objects will fail at compile time.
Edited by Alexandre Janniaux