vaapiimage: rewrite

m_width/m_height/m_format duplicate with the ones in m_image, remove them
use simple fourcc for image format
use smart pointer
vaapiimage: add video frame export type for vaapiimage

VIDEO_DATA_MEMORY_TYPE_RAW_POINTER:     pass data pointer to client
VIDEO_DATA_MEMORY_TYPE_RAW_COPY:        copy data to client provided buffer
VIDEO_DATA_MEMORY_TYPE_DRM_NAME:        export drm flink name
VIDEO_DATA_MEMORY_TYPE_DMA_BUF:         export dma_buf fd
vaapiimagepool: add imagepool
vaapisurface: use vaapiimagepool for csc

add the image pool to decode surface pool to support color conversion or resize.
interface: add API for video frame export and recycle

getOutput(VideoFrameRawData* frame, ..) to export one decoded frame
  Video frame export type and desired color format / resolution can be set.
renderDone(VideoFrameRawData* frame) to recycle one video frame after client rendering
test: add egl/gles2 test
tests: add more render mode for decode test
v4l2: codecbase and encoder update (for decoder implementation)

sendEOS (empty buffer) before input thread exit
event_pending is used to notify client some event to query
add EGL utils
add exported video frame memory type support
add recycleOutputBuffer
v4l2: add decode support
test: add v4l2decode test