Don't console.log when the scene needs an update---to verbose.
Merge branch 'master' into picker
Save the view with the object instead of the model

The view is more general---we can easily get the model from the view.
Add the capability for specifying a 'root' object for the picker to check intersection with

There will probably be many times when we want the intersection checker to only check with certain objects; this makes this possible.

For example:

username='jasongrout'

html("<script src='http://boxen.math.washington.edu/home/jason/pythreejs/pythreejs.js'></script>")
load('http://boxen.math.washington.edu/home/jason/pythreejs/pythreejs.py')

html("<script src='https://raw2.github.com/%s/ipywidgets/master/widgets.js'></script>"%username)
load('https://rawgithub.com/%s/ipywidgets/master/widgets.py'%username)


import time
print 'Loading...'
time.sleep(2)
my=[]
my.append(Mesh(geometry=SphereGeometry(radius=4), 
                material=LambertMaterial(color='white')))
red = Mesh(geometry=SphereGeometry(radius=.1), 
                material=LambertMaterial(color='red'))
my.append(red)

c = PerspectiveCamera(position=[0,10,10], fov=40, children=[DirectionalLight(color=0xffffff, position=[3,5,1], intensity=0.5)])
scene = Scene(children=my+[AmbientLight(color=0x777777)])
p=Picker(event='mousemove', root=my[0])
renderer = Renderer(camera=c, scene = scene, controls=[OrbitControls(controlling=c),p])
show(renderer)

a=Link(widgets=[(p,'point'), (red, 'position')])
show(a)
With new storage of the renderer_id, we can easily get the view in the current renderer corresponding to an object.  Do this for the controller.