GfxShading: Simplify holding the Function

Make it be a vector of unique pointers.

That way we don't have to worry to delete the pointers on error cases,
they are deleted automatically.

This actually fixes some leaks because in some cases we were deleting
them on the error case but in some others we were not
7 jobs for funcs_unique_ptr in 4 minutes and 26 seconds (queued for 2 seconds)
Status Job ID Name Coverage
  Build
passed #3588709
build

00:04:26

passed #3588714
build_android

00:00:33

passed #3588710
build_clang_libcpp

00:04:12

passed #3588713
build_clazy

00:01:56

passed #3588712
build_mingw64_fedora

00:01:54

passed #3588711
build_ubuntu_16_04

00:01:23

passed #3588708
clang_format

00:01:11