Decouple experiment creation/initialization from starting

Also update experiment tests to be more robust without shared state.