Change the way of geometries transferring

Retrieve and send node geometry separately.
Also send normals of triangles, counts and colors in addition to vertices
Let's rename this as ```ContainsGeometryData```, and I think ```GetDrawableIds``` is not the right way to determine if a given node has geometric data. I think the best way is to use ```EngineController.GetGraphicItems()```.

Also note that a node can have geometric data, and then it may change. For example, a code block node that generates a ```double``` value may be updated to produce a ```Sphere``` object at a much later time. So be sure to test this scenario out.