compute self._models on the fly

only updating when `self.add` is called causes code like this to fail:
```
output_file('/tmp/foo.html')
hold()
figure(background_fill="#222222")
line([1,2], [1,2])
plot = curplot()
plot.x_range = Range1d(start=0, end=10)
plot.y_range = Range1d(start=0, end=10)
show()
```
Because the ranges do not get added to `self._models`