different SQLiteDataStore has different connection even they are same thread.

SQLiteDataStore is designed to be used as singleton ,shared between threads,
but if two instances stays,  blocking other thread semantic may confused
 (if SQLITE_THREAD_SAFE=2, op will not be serialized ,if we reset password, must block other thread R/W)

previous implementation use static thread local variable, makes different instance share
the same connection in same thread, makes difficult to blocking other thread (we can only
control state of current this object, but other instance shares thread local connection)

this commit makes thread local connection instance specified , so different SQLiteDataStore
has different connection (even in same thread),  multi instance may not be used ,but this
makes semantic more clear
make Global.dataStorePassword private and getter
implements SQLiteDataStore block/unblock logic
add a helper class to do datastore password change