Be much smarter about when to render the scene.

This uses the orbit controls start, end, and change events to only draw when we need to, rather than rendering all the time.

This likely will make random scene changes not available until the next update.  By default, we should hook up to the update events to redraw the scene once more.
Fix scoping error of callback in a for loop
Flesh out the rendering triggering system, so that render requests are propagated up to the scene and trigger a serenader.

This now works and automatically changes the text/color and rerenders the result:

tt = TextTexture(string="Does this work?", color='white')
geometry = SphereGeometry(radius=2, radialSegments=100)
material = LambertMaterial(color='green', map=tt)
myobject = Mesh(geometry=geometry, material=material)

c = PerspectiveCamera(position=[0,10,10], fov=40, children=[DirectionalLight(color=0xffffff, position=[3,5,1], intensity=0.5)])
scene = Scene(children=[myobject, AmbientLight(color=0x777777)])

renderer = Renderer(camera=c, scene = scene, controls=OrbitControls(controlling=c))
show(renderer)
import time
time.sleep(4)
tt.string='hello, how are you'
material.color='yellow'
Merge branch 'SageGraphics' of https://github.com/DavidMascharka/pythreejs
Fix a needs_update callback
Apparently we need to set the font twice, once before each call.
Scale text height by 4 again