Smartstore Re-index Support

Open questions:
1) should we guard against accessing the soup being altered (we would probably need a smartstore-wide lock since smartsql allows for multiple soups access - and locking at the soup level could get us into a deadlock situation), on the hybrid side we are already doing everything within a synchronized(SmartStorePlugin.class) block, should we move that down to the native layers (especially since native/hybrid concurrent access happen with the instrumentation sdk)?
2) should we expose reIndexSoup (to native and hybrid devs)?
3) should we try to recover if something happens in the middle of the alter soup? how would we know? It's going to be  hard building something bullet proof.