nvenc: Register elements per GPU device with capability check

* By this commit, if there are more than one device,
nvenc element factory will be created per
device like nvh264device{device-id}enc and nvh265device{device-id}enc
in addition to nvh264enc and nvh265enc, so that the element factory
can expose the exact capability of the device for the codec.

* Each element factory will have fixed cuda-device-id
which is determined during plugin initialization
depending on the capability of corresponding device.
(e.g., when only the second device can encode h265 among two GPU,
then nvh265enc will choose "1" (zero-based numbering)
as it's target cuda-device-id. As we have element factory
per GPU device, "cuda-device-id" property is changed to read-only.

* nvh265enc gains ability to encoding
4:4:4 8bits, 4:2:0 10 bits formats and up to 8K resolution
depending on device capability.
Additionally, I420 GLMemory input is supported by nvenc.
17 jobs for master in 47 minutes and 59 seconds (queued for 8 seconds)
Status Job ID Name Coverage
  Preparation
passed #439170
gst indent

00:00:38

passed #439169
manifest

00:00:28

 
  Build
passed #439176
build cerbero android universal

00:10:18

passed #439177
build cerbero cross win32

00:09:19

passed #439178
build cerbero cross win64

00:06:45

passed #439175
build cerbero fedora x86_64

00:06:57

manual #439180
gst-ios-12.2 allowed to fail manual
build cerbero ios universal
passed #439179
gst-macos-10.14
build cerbero macos x86_64

00:06:41

passed #439171
build fedora x86_64

00:05:49

passed #439172
build nodebug fedora x86_64

00:05:19

passed #439766
build static fedora x86_64

00:11:16

passed #439174
build static nodebug fedora x86_64

00:11:57

failed #439173
build static fedora x86_64

00:13:24

 
  Test
passed #439181
check fedora

00:05:11

passed #439182
integration testsuites fedora

00:09:38

 
  Integrate
passed #439183
android universal examples

00:07:17

passed #439184
documentation

00:04:24