Better delayed creation

Now, instead of building the model, you ask the model to
create a simulator for you, using Model.simulator.
That simulator contains a full copy of the original
model, so that you can ask the original model to build another
simulator (with a different dt, or another simulator class)
if you want.

Units tests and example notebooks have been changed to reflect this.
The notebooks especially are more robust as a result of this change.

Still todo: updating the EnsembleArray template and its
associated examples and unit tests.