gpucodec module refactoring

* Moved gpu video encoding/decoding to separate namespace `cv::gpucodec`.
* Hid implementation details, all functionality are available through abstract interfaces.
* Simplified VideoSource interface (user defined demultiplexing), now it has only 2 abstract methods and doesn't required thread management.