video-sink: use a shader cache

Cogl currently doesn't garbage collect its shader programs so
introduce a local cache to avoid leaking.

https://bugzilla.gnome.org/show_bug.cgi?id=720408