Add a test verifying solution to issue #420

And a little benchmark:
```python
In [1]: from bokeh.tests.test_objects import large_plot

In [2]: %time context, objects = large_plot(5000)
CPU times: user 4.9 s, sys: 352 ms, total: 5.25 s
Wall time: 5.25 s

In [3]: from bokeh.objects import recursively_traverse_plot_object

In [4]: from bokeh.session.session import Session

In [5]: %time len(recursively_traverse_plot_object(context))
CPU times: user 2.3 s, sys: 4 ms, total: 2.3 s
Wall time: 2.28 s
Out[5]: 85001

In [6]: %time len(set(Session._collect_objs([context])))
CPU times: user 532 ms, sys: 16 ms, total: 548 ms
Wall time: 481 ms
Out[6]: 85001

In [7]: len(objects)
Out[7]: 85001
```