OpenGL/BufferCanvas: use glPushAttrib() to save old viewport

Fall back to glGetIntegerv() on Android.
OpenGL/BufferCanvas: save and restore the modelview matrix

Reverts commit f837a348; the operations were indeed necessary, but not
because the BufferCanvas renderer modified the matrix, but because the
matrix was not zero before, and that non-zero matrix must be restored.