hotifx/crossfilter

@hhuuggoo if you have any comments or suggestions where to start please let me know. 
```
2014-09-03 20:28:15,327:ERROR:root:model not found for {u'type': u'Plot', u'id': u'9bf7e2ef-e190-4eb0-96fd-24a9a9504c90'}
2014-09-03 20:28:15,327:ERROR:root:model not found for {u'type': u'ColumnDataSource', u'id': u'6a17cb1f-969c-47a2-a2b4-ef7670670358'}
2014-09-03 20:28:15,327:ERROR:bokeh.server:Exception on /bokeh/bb/7a38c079-7326-4f8a-bdef-232437f6f3c1/CrossFilter/de8f1bc9-5dc0-4f68-b8d3-dcf7511e3147/ [PUT]
Traceback (most recent call last):
  File "/Users/bryan/anaconda/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/bryan/anaconda/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/bryan/anaconda/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/bryan/anaconda/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/bryan/anaconda/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/bryan/work/bokeh/bokeh/server/crossdomain.py", line 29, in wrapped_function
    resp = make_response(f(*args, **kwargs))
  File "/Users/bryan/work/bokeh/bokeh/server/views/backbone.py", line 139, in handle_specific_model
    return update(docid, typename, id)
  File "/Users/bryan/work/bokeh/bokeh/server/views/bbauth.py", line 20, in wrapper
    return func(docid, *args, **kwargs)
  File "/Users/bryan/work/bokeh/bokeh/server/views/backbone.py", line 164, in update
    clientdoc = bokeh_app.backbone_storage.get_document(docid)
  File "/Users/bryan/work/bokeh/bokeh/server/serverbb.py", line 92, in get_document
    doc = Document(json_objs)
  File "/Users/bryan/work/bokeh/bokeh/document.py", line 45, in __init__
    self.load(*json_objs, dirty=False)
  File "/Users/bryan/work/bokeh/bokeh/document.py", line 244, in load
    m.update(**props)
  File "/Users/bryan/work/bokeh/bokeh/crossfilter/objects.py", line 330, in update
    self.setup_events()
  File "/Users/bryan/work/bokeh/bokeh/crossfilter/objects.py", line 338, in setup_events
    obj.on_change('selected', self, 'handle_filter_selection')
AttributeError: 'NoneType' object has no attribute 'on_change'
```