[GLES] Avoid getting viewport so often

GLES is generally offloaded to a GPU and fed a stream of commands.
These can be executed asynchronously by GPU and there is no need for the host to block.
Whenever a gl call requires a result back that may be affected by previous commands
the queue needs to be drained and a result returned from GPU. This acts as a bottleneck.

Looking closely at what xbmc does, there is only one call that requires a result that is
executed every frame. That is glGetIntegerv(GL_VIEWPORT).
However xbcm is perfectly capable of remembering what it set this to.

By using a cached version of this value, on a Pi, the framerate improves from 69fps to 95fps,
with vsync disabled, and RSS feed showing in home screen.
Merge pull request #3726 from popcornmix/cache_viewport

[GLES] Avoid getting viewport so often