Stop master thread from OscarMTProducer::globalEndRun()

Suggested by @Dr15Jones, makes the stopG4()+join() time more
deterministic.
Enable UserActions
Enable magnetic field
Enable geometry dumping
Use thread_local storage in CurrentG4Track

Feels dirty, but by far the easiest solution given everything was
static already.
Make most SensitiveDetectorCatalog methods const, and AttachSD::create() to take const SensitiveDetectorCatalog

Percolate the change through SensitiveDetector class hierarchy. Needed
to integrate Geant4MT to our framework.
Enable SensitiveDetectors
Enable StorePhysicsTables
Enable watchers
Finalize terminateRun() + some cleanup
Copy the implementation of RunManagetMTWorker::abortEvent()
Enable resetGenParticleId()
Use tokens
Enable output in OscarMTProducer
Fix CustomUIsession

The interface of G4UIsession has been changed slightly (or this has
never worked...), now ReceiveG4cout/cerr are properly overridden.
Apply CustomUIsession also for worker threads
Cover also the Geant4 MT initialization message in master thread with CustomUIsession
Make RunManagerMTInit::readES() thread safe
Make RunManagerMTInit the GlobalCache of OscarMTProducer

RunManagerMTInit::readES() has checks if geometry or magnetic field
change, and the checks make little sense if RunManagerMTInit's
lifetime is Run and not the whole program.
Add last missing bits from serial RunManager