Moving parts of the python api into the c++ NodeGraphContext.

A lot of the logic related to panning zomming and tumbling the
node graph has been moved into the c++ NodeGraphContext.
This was not done speed reasons. It was to make the python api
much nicer.  Most of the python api will now be exposed from
the python wrapper of the NodeGraphContext.

Also the c++ matrix logic has all been modified to use glm::mat4
matrices. These matrices are column major and vectors are multiplied
on the right. This matches the opengl convention. Previously we
use row major matrices with vectors multiplied on the left.