ModelSpec now ensures that a given model is only instantiated once
Simulation now uses two tiers of specification before instantiation

By default, calling a simulation will now use topo.sim.model to build a
ModelSpec (topo.sim.specification) which it will then be used to load
the simulation, matching previous behaviour. Setting the 'load' flag to
False or setting a custom ModelSpec on topo.sim.specification now allows
the ModelSpec to be tweaked before instantiation.