new api drawXXX() to support custom osd/subtitle drawing on renderer.

subclass the existing renderer. logic is clear
TODO:
0. add constructor for with private class parameter
1. what if QPainter is needed
2. unifine the painting logic logic
3. set as pure virtual when other renderers done(gl, graphicsitem)
4. add final vo template
new api: VideoRenderer::widget(), graphicsItem()
gl: use drawXXX() api
GraphicsItemRenderer use the same painting logic and api with others
GraphicsItemRenderer aspect ratio change state

It's seems right. but why other renderer do not have this problem?
new api drawXXX() to support custom osd/subtitle drawing on renderer.

subclass the existing renderer. logic is clear
TODO:
0. add constructor for with private class parameter
1. what if QPainter is needed
2. unifine the painting logic logic
3. set as pure virtual when other renderers done(gl, graphicsitem)
4. add final vo template
new api: VideoRenderer::widget(), graphicsItem()
gl: use drawXXX() api
GraphicsItemRenderer use the same painting logic and api with others
GraphicsItemRenderer aspect ratio change state

It's seems right. but why other renderer do not have this problem?
Merge branch 'master' into dev
move vo private classes to private headers to be reused in subclasses

developers may create a subclass of existing VideoRenderer, for example,
Direct2DRenderer, want to reimplement drawXXX functions. Then private
class may be used.
TODO: how to make sure binary compatible
Merge branch 'dev' of github.com:wang-bin/QtAV into dev
VideoRenderer::drawFrame() is pure virtual now
Merge branch 'master' into dev