Replace gl matrix stack with client side 2d transfoms.

See https://github.com/Bertram25/ValyriaTear/issues/204

This is a rather invasive change (I hope I didn't miss any corner cases), so please test before merging.

I've used OpenGL naming scheme for transform ops (Translate, Rotate, Scale). This can be changed if required (original code used Move/MoveRelative).